私は良いパターンを見つけ、この機能のサポートで何が起こっているかをよりよく説明する方法を見つけるために良い時間を費やしました。それを説明する最良の方法は次のとおりであることがわかりました...
- Dockerfile:独自の相対パスにあるファイルのみを表示します
- コンテキスト:共有するファイルとDockerfileがコピーされる「スペース」内の場所
ということで、これがDockerfileの例です。 start.sh
Dockerfile
これはALWAYS
、自身の現在のディレクトリを有し、その相対パスからロードされlocal
、指定したパスを参照します。
COPY start.sh /runtime/start.sh
ファイル
このアイデアを考えると、Dockerfileの複数のコピーで特定のものを構築することを考えることができますが、すべてにへのアクセスが必要ですstart.sh
。
./all-services/
/start.sh
/service-X/Dockerfile
/service-Y/Dockerfile
/service-Z/Dockerfile
./docker-compose.yaml
この構造と上記のファイルを考慮して、ここにdocker-compose.ymlがあります
docker-compose.yaml
- この例では、
shared
コンテキストdirはruntime
dirです。
- ここでも同じメンタルモデルです。このdirの下にあるすべてのファイルが、いわゆるに移動されると考えてください
context
。
- 同様に、同じディレクトリにコピーするDockerfileを指定するだけです。を使用して指定できます
dockerfile
。
- メインコンテンツが配置されているディレクトリは、設定される実際のコンテキストです。
docker-compose.yml
次のようです
version: "3.3"
services:
service-A
build:
context: ./all-service
dockerfile: ./service-A/Dockerfile
service-B
build:
context: ./all-service
dockerfile: ./service-B/Dockerfile
service-C
build:
context: ./all-service
dockerfile: ./service-C/Dockerfile
all-service
がコンテキストとして設定されている場合、共有ファイルstart.sh
がそこにコピーされ、それぞれで指定されたDockerfileもコピーされますdockerfile
。
- それぞれが独自の方法で構築され、開始ファイルを共有します!
乾杯!