なんとまた備忘録での投稿です。
今回はdocker-composeを利する際の注意点です。
▼起こったこと
docker build でファイルが存在するにも関わず file not found になる
▼原因
docker-compose.yml の build で context を利用した場合は、Dockerファイル内でもそこから見たパスを記載する必要がある
※自分でも何を書いているかわからなくなってきました、、、
▼具体例
・ディレクトリツリー
root
├── README.txt
├── docker-compose.yml
├── httpd
│ ├── Dockerfile
│ └── conf
├── httpd.conf
・docker-compose.yml
version: "3.9"
services:
test-web01:
build:
context: ./
dockerfile: httpd/Dockerfile
container_name: test-web01
ports:
- "80:80"
→context で ./ を指定しており、docker-compose.yml ファイルが配置されているディレクトリがルートディレクトリとなるので、
Dockerfileも httd directoryから指定する必要がある
すなわち、./ Dockerfile で指定してしまうと、Dockerfileのパスが docker-compose.yml/Dockerfile となり、エラーになる
・Dockerfile
FROM httpd:2.4
#デフォルトのconfファイルを上書き
COPY httpd/conf/httpd.conf /usr/local/apache2/conf/httpd.conf ★
#ポート開放
EXPOSE 80
→こちらも context で ./ を指定している関係上、docker-compose.yml ファイルを配置しているディレクトリをルートディレクトリとして、http ディレクトリからパスを指定する必要がある