[docker] 특정 Dockerfile을 빌드 할 수 없음

다음과 같은 Dockerfile을 빌드 할 수 있습니다.

docker build -t deepak/ruby .

그러나 이름이 지정되지 않은 Dockerfile의 경우 Dockerfile

# DOCKER-VERSION 0.4.8

FROM deepak/ruby

MAINTAINER Deepak Kannan "deepak@example.com"

RUN ./bin/rails s

우리가라고 가정 해 봅시다 Dockerfile.app
우리가 구축하는

docker build -t deepak/app Dockerfile.app

그러면 오류가 발생합니다

Uploading context 0 bytes
Error build: EOF
EOF



답변

.두 명령 끝에 점이 있습니다.

docker build -f MyDockerfile.

또는 태그 사용 :

docker build -t mysuperimage -f MyDockerfile.


답변

이 작품

docker build doronaviguy/helloworld -f SomeDockerFile .

Docker 빌드 문서


답변

docker 빌드의 마지막 매개 변수는 빌드 경로 입니다.이를 입력 .하면 Dockerfile. 그것을 변경하면 올바르지 않은 Dockerfile.app을 찾으려고 시도 Dockerfile.app/Dockerfile합니다.

여전히 작동하는지 확실하지 않지만 이전에는이 ​​작업을 수행 할 수있었습니다.

$ docker build -t deepak/app - < Dockerfile.app

시도해보고 도움이되지 않는 경우 Docker 문제를 열어이 기능을 다시 추가하거나 다른 이름으로 Dockerfile을 사용하는 방법에 대한 설명서를 업데이트하십시오.

자세한 정보 : http://docs.docker.io/en/latest/commandline/command/build/


답변

dockerfeed 사용해보십시오 . Docker 기능을 사용하여 stdin을 통해 컨텍스트를 빌드합니다. 나는 내가 직면 한 문제를 정확히 해결하기 위해 스크립트를 작성했습니다.

Dockerfile을 다른 파일로 바꾸려면 다음과 같이하십시오.

dockerfeed -d Dockerfile.app . | docker build -t deepak/ruby -

그리고 voilà. Dockerfeed는 docker build. Dockerfile로 소스를 압축하지만 이전 Dockerfile을 원하는 것으로 바꿀 수 있습니다. 프로세스에서 파일이 생성되지 않으며 소스가 변경되지 않습니다. 생성 된 tar 아카이브는 docker로 파이프되어 Docker 데몬으로 전송됩니다.

업데이트 :
이것은 -f사용 가능한 스위치 가 없었던 예전에는 유효한 대답이었습니다 . Docker 버전 1.5에서는이 옵션이 도입되었습니다. 이제 다음과 같이 다른 Dockerfile을 제공하여 빌드 할 수 있습니다.

docker build -f other-Dockerfile .


답변

docker-compose를 사용하여이를 달성 할 수도 있습니다.

빌드 섹션 아래의 docker-compose.yml에서 다음과 같이 dockerfile과 대체 이름을 저장할 디렉토리를 지정할 수 있습니다.

build:
  context: "/path/to/docker/directory"
  dockerfile: "dockerfile-alternate-name"

도커 작성


답변

docker-composedocker-machine을 포함한 docker 도구 상자를 성공적으로 설치했다고 가정합니다 . 이것은 내 docker-compose.yml입니다.

version: '2'
services:
  web: ./www/python
  ports:
   - "5000:5000"

그리고 이것은 Dockerfile 아래에 있습니다.

FROM python:3.4-alpine
ADD ./www/python /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

해당 파일이 정확히 루트 폴더 아래에 있는지 확인하십시오. docker-compose up을 실행하면 웹용 이미지를 빌드 할 것입니다.


답변

내 경우는 /tmp디렉토리에 있으며 많은 파일이 있으며 docker는 다른 파일을 시도하지만-f <Dockerfile.foo>

가장 깨끗하고 쉬운 (나에게) 해결책은 ( dockerfeed위의 답변에서) 다음과 같습니다.

cat DockerFile.debian.foo | docker build -t debian.foo -