도커: 프로젝트의 여러 도커 파일
데이터베이스에 대한 Docker 파일이 하나 있고 응용 프로그램 서버에 대한 Docker 파일이 하나 있는 경우 프로젝트에 속한 Docker 파일을 어떻게 구성합니까?소스에서 일종의 계층 구조를 생성합니까?대규모 엔터프라이즈 프로젝트는 Docker 파일 하나로 구성될 수 없습니까?
도커의 최신 버전(>=1.8.0)에서는 다음을 수행할 수 있습니다.
docker build -f Dockerfile.db .
docker build -f Dockerfile.web .
큰 세이브.
편집: raksja의 설명에 따라 버전 업데이트
편집: @vsevolod의 코멘트: 파일을 제공하여 VS 코드에서 구문 강조를 얻을 수 있습니다.Docker 파일 확장자(이름 대신)(예: Prod).도커 파일, 테스트.도커 파일 등
사용 및 다중Dockerfile
별도의 디렉토리에
이름을 다음으로 변경하지 않음
Dockerfile.db
또는Dockerfile.web
IDE에서 지원되지 않을 수 있으며 구문 강조 표시가 손실됩니다.
킹슬리 우흐노르가 말했듯이, 당신은 복수를 가질 수 있습니다.Dockerfile
디렉토리당 하나씩, 빌드하려는 항목을 나타냅니다.
나는 갖고 싶어요.docker
각 응용 프로그램과 해당 구성을 저장하는 폴더입니다.다음은 데이터베이스가 있는 웹 응용 프로그램의 프로젝트 폴더 계층 구조 예입니다.
docker-compose.yml
docker
├── web
│ └── Dockerfile
└── db
└── Dockerfile
docker-compose.yml
예:
version: '3'
services:
web:
# will build ./docker/web/Dockerfile
build: ./docker/web
ports:
- "5000:5000"
volumes:
- .:/code
db:
# will build ./docker/db/Dockerfile
build: ./docker/db
ports:
- "3306:3306"
redis:
# will use docker hub's redis prebuilt image from here:
# https://hub.docker.com/_/redis/
image: "redis:alpine"
docker-compose
명령줄 사용 예:
# The following command will create and start all containers in the background
# using docker-compose.yml from current directory
docker-compose up -d
# get help
docker-compose --help
Docker 파일의 빌드 컨텍스트의 일부로 상위 폴더의 파일이 필요한 경우
위의 솔루션을 사용하여 다음과 같은 작업을 수행할 수 있습니다.Dockerfile
등의 디렉토리에docker/web/Dockerfile
당신이 필요한 것은 빌드를 설정하는 것입니다.context
당신의docker-compose.yml
다음과 같이:
version: '3'
services:
web:
build:
context: .
dockerfile: ./docker/web/Dockerfile
ports:
- "5000:5000"
volumes:
- .:/code
파일 계층은 다음과 같습니다.
config-on-root.ini
docker-compose.yml
docker
└── web
├── Dockerfile
└── some-other-config.ini
그./docker/web/Dockerfile
다음과 같은 컨텍스트에서 원하는 파일에 액세스할 수 있습니다.
FROM alpine:latest
COPY config-on-root.ini /
COPY docker/web/some-other-config.ini /
또한 빌드 컨텍스트에는 지정된 디렉토리의 모든 파일이 포함됩니다.다음을 사용해야 합니다..dockerignore
빌드하는 동안 시간을 절약하기 위해 원하지 않는 큰 파일 또는 디렉터리를 로드하지 않도록 하는 파일입니다.
다음은 tldr docker-compose의 몇 가지 빠른 명령입니다.자세한 내용은 공식 문서를 참조하십시오.
저자 노트
이 답변은 구식입니다.그림이 더 이상 존재하지 않으며 도커 컴포지트로 대체되었습니다.승인된 답변은 삭제할 수 없습니다.
Docker Composite는 프로젝트 계층 구조 작성을 지원합니다.이제 각 하위 디렉터리에서 도커 파일을 쉽게 지원할 수 있습니다.
├── docker-compose.yml
├── project1
│ └── Dockerfile
└── project2
└── Dockerfile
원답
각 구성요소에 대한 Docker 파일이 들어 있는 디렉토리를 만듭니다.예:
컨테이너를 빌드할 때 디렉터리 이름만 지정하면 도커가 올바른 도커 파일을 선택합니다.
Intellij에서 저는 도커 파일의 이름을 *로 간단히 변경했습니다.도커 파일 및 관련 파일 형식 *.도커 파일에서 도커 구문으로.
추상화 계층을 추가합니다. 예를 들어, 이 프로젝트의 https://github.com/larytet/dockerfile-generator 와 같은 YAML 파일은 다음과 같습니다.
centos7:
base: centos:centos7
packager: rpm
install:
- $build_essential_centos
- rpm-build
run:
- $get_release
env:
- $environment_vars
짧은 Python 스크립트/make는 구성 파일에서 모든 Docker 파일을 생성할 수 있습니다.
여러 개의 도커 파일을 사용해야 하는 프로젝트에서 작업할 때는 각 도커 파일을 별도의 디렉토리에 만들기만 하면 됩니다.예를 들어.
app/ db/
위의 각 디렉터리에는 해당 도커 파일이 포함됩니다.응용프로그램이 빌드될 때 도커는 모든 디렉토리를 검색하고 모든 도커 파일을 빌드합니다.
언급URL : https://stackoverflow.com/questions/27409761/docker-multiple-dockerfiles-in-project
'programing' 카테고리의 다른 글
Android에서 비트맵 크기를 조정하는 방법? (0) | 2023.08.20 |
---|---|
근처의 구문이 잘못됨 (0) | 2023.08.20 |
Oracle 패키지에 모든 예외를 기록하는 방법은 무엇입니까? (0) | 2023.08.20 |
시간 초과 jQuery 효과 (0) | 2023.08.20 |
Powershell 모듈에서 "헬퍼" 기능을 숨기는 방법 (0) | 2023.08.20 |