나는 좋은 패턴을 알아 내기 위해이 시간을 보냈다. 설명하는 가장 좋은 방법은 다음과 같습니다.
- Dockerfile : 자체 상대 경로에서 파일 만 볼 수 있습니다
- 컨텍스트 : 공유하려는 파일과 Dockerfile이 복사 될 "공간"의 위치
그래서, 말했듯이, 여기에 파일을 재사용 해야하는 Dockerfile의 예가 있습니다. start.sh
도커 파일
그것은 ALWAYS
로 자신의 현재 디렉토리를 가진, 상대 경로에서로드됩니다 local
사용자가 지정한 경로에 대한 참조입니다.
COPY start.sh /runtime/start.sh
파일
이 아이디어를 고려하면 Dockerfiles에 특정 항목을 빌드하기 위해 여러 개의 사본이 있다고 생각할 수 있지만 모두에 액세스해야합니다 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
컨텍스트 디렉토리는 runtime
디렉토리입니다.
- 여기 동일한 정신 모델로,이 디렉토리 아래의 모든 파일이 소위로 이동한다고 생각하십시오
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
.
- 시작 파일을 공유하여 각자 고유의 방식으로 빌드됩니다!
건배!