Dockerfiles의 이름을 지정하는 방법


140

Dockerfiles의 이름을 지정하는 방법을 잘 모르겠습니다. GitHub의 많은 Dockerfile파일 확장자없이 사용 합니다. 나는 그들에게 이름과 확장명을 줍니까? 그렇다면 무엇? 아니면 그냥 전화 해 Dockerfile?

답변:


165

hub.docker.com에서 오토 빌더를 사용하려면 dockerfile 이름을 변경하지 마십시오. docker 파일에 확장자를 사용하지 말고 null로 두십시오. 파일 이름은 다음과 같아야합니다 (확장자 없음).

Dockerfile

그러나 아래처럼 할 수도 있습니다 ...

dev.Dockerfile, uat.Dockerfile, prod.Dockerfile

VS 코드에서는 사용할 수 있으며 <purpose>.Dockerfile그에 따라 작동합니다.


83
동일한 디렉토리에 여러 Dockerfile이있는 경우는 어떻습니까?
Visgean Skeloru

@VisgeanSkeloru 당신이 필요가있을 경우, 내가 봤는데 상관없이 보일지 다른 디렉토리에 넣어 수있는 번거 로움 조금 떨어져 이미 규칙을 설립 할지라도
orustammanapov

2
@VisgeanSkeloru 같은 디렉토리에 여러 Dockerfile이 없습니다. 포함하는 디렉토리가된다 컨텍스트 대한 docker build다른 이미지의 dockerfile가 변경되면 각각의 이미지가 불필요하게 재 구축되는 것을 의미 명령.
Thomas

6
@Thomas 때로는 개별 컨테이너에서 공통 파일을 공유하기 위해 동일한 디렉토리에 여러 Dockerfile을 배치해야합니다. docker 컨텍스트는 "../some-common-stuff"에 액세스 할 수 없기 때문에
Devis L.

"D"는 대문자 여야합니까, 아니면 중요하지 않습니까?
NONAME

51

dev.Dockerfile, test.Dockerfile, build.Dockerfile

VS 코드에서 사용 <purpose>.Dockerfile하고 올바르게 인식됩니다.


27

컨테이너마다 Dockerfile (확장자 없음)이있는 디렉토리가 있어야한다고 생각합니다. 예를 들면 다음과 같습니다.

  /db/Dockerfile
  /web/Dockerfile
  /api/Dockerfile

빌드 할 때 디렉토리 이름 만 사용하면 Docker가 Dockerfile을 찾습니다. 예 :

docker build -f ./db .

귀하의 예에서 3 개의 컨테이너를 만들 것입니까?
alvas

@alvas 네, 그것은 것
garryp

4
충분하지 않은 경우가 많습니다. Docker는 파일을 볼 수 없습니다. 예를 들어 대상, 빌드 등
Cyva

docker-compose 명령을 사용 하여이 3 개의 docker 파일을 한 번에 실행할 수 있습니까?
Yogi Ghorecha

16

hub.docker.com에서 오토 빌더를 사용하려면 이어야 Dockerfile 합니다. 그래서 :)


3
나는 질문의 맥락이 더 광범위하다고 생각합니다. 아마도 오토 빌더 를 사용하지 않는 개인 이이 답변을보다 완전하게 만들기 위해 추가 정보를 포함 할 수 있습니다 .
Josh Habdas

16

이것은 사실 인 것처럼 보이지만 개인적으로는 나쁘게 디자인 된 것 같습니다. 물론, 기본 이름 (확장자 포함)을 갖지만 다른 이름을 허용하고 명령에 도커 파일 이름을 지정하는 방법이 있습니다.

확장 기능을 갖는 것도 응용 프로그램을 해당 확장 유형에 연결할 수 있기 때문에 좋습니다. MacOSX에서 Dockerfile을 클릭하면 Unix 실행 파일로 취급하여 실행하려고 시도합니다.

Docker 파일의 확장자가 있으면 OS에 특정 응용 프로그램, 예를 들어 텍스트 편집기 응용 프로그램으로 시작하도록 지시 할 수 있습니다. 확실하지 않지만 현재 동작은 파일 허용과 관련이있을 수 있습니다.


15

같은 디렉토리에 두 개의 Dockerfile을 만들었습니다.

# vi one.Dockerfile
# vi two.Dockerfile

두 Dockerfile 사용을 빌드하려면

# docker build . -f one.Dockerfile
# docker build . -f two.Dockerfile

참고 : 현재 작업 디렉토리에 있어야합니다.


10

나는 그들에게 이름과 확장명을 줍니까? 그렇다면 무엇?

Dockerfile의 이름을 원하는대로 지정할 수 있습니다. 기본 파일 이름은 Dockerfile(확장자 없음)이며, 기본값을 사용하면 컨테이너 작업시 다양한 작업을보다 쉽게 ​​수행 할 수 있습니다.

특정 요구 사항에 따라 파일 이름을 변경할 수 있습니다. 예를 들어, 여러 아키텍처를 구축하려는 경우 resin.io 팀이 HA 컨테이너 컨테이너에 대해 멀티 컨테이너 ARM 예제를 수행 한 것처럼 아키텍처를 나타내는 확장을 추가 할 수 있습니다 .

Dockerfile.aarch64
Dockerfile.amd64
Dockerfile.armhf
Dockerfile.armv7hf
Dockerfile.i386
Dockerfile.i386-nlp
Dockerfile.rpi

제공된 예제에서 각 Dockerfile은 서로 다른 아키텍처 별 업스트림 이미지로 빌드합니다. 빌드에 사용할 특정 Dockerfile 은 명령 행을 사용하여 컨테이너를 빌드 할 때 --file, -f옵션을 사용하여 지정할 수 있습니다 .


1
나는 아키텍처 (또는 무엇이든)를 나타내는 확장을 사용하는 것을 좋아합니다. 다른 답변과 달리 모든 Dockerfile은 크고 복잡한 디렉토리에서 찾기가 쉽지 않습니다. 그들은 자연스럽게 함께 정렬합니다.
Mike Sherrill 'Cat

3

Dockerfile디렉토리 당 하나의 도커 파일 만있는 경우 좋습니다. 동일한 디렉토리에 여러 개의 docker 파일이 필요한 경우 원하는 표준을 사용할 수 있습니다. 최근 프로젝트에는 환경이 충분히 다르기 때문에 AWS 도커 파일과 로컬 개발 환경 파일이있었습니다.

Dockerfile Dockerfile.aws


이 방법도 아키텍처를 지정하는 데 사용되는 것을 보았습니다. 예를 들어, Dockerfile.armv7hf옆에를 배치 하십시오 Dockerfile.i386.
Josh Habdas

1

Dockerfile (사용자 정의 이름 및 폴더) :

   docker/app.Dockerfile
   docker/nginx.Dockerfile

짓다:

   docker build  -f ./docker/app.Dockerfile .
   docker build  -f ./docker/nginx.Dockerfile .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.