다중 FROM-의미
Neo4j 데이터베이스와 Node.js를 모두 실행해야하는 github 의 Linkurious 프로젝트에 대한 도커 이미지를 빌드하고 싶습니다 .
내 첫 번째 접근 방식은 Neo4j를 포함하는 내 이미지의 기본 이미지를 선언하는 것이 었습니다. 참조 문서는 유용한 방식으로 "기본 이미지"를 정의하지 않습니다.
기본 이미지 : 상위가없는 이미지는 기본 이미지입니다.
그 이미지 자체에 기본 이미지가없는 경우 기본 이미지 만 가질 수 있다는 것을 읽었습니다.
그러나 기본 이미지는 무엇입니까? FROM 지시문에서 neo4j / neo4j를 선언하면 이미지가 실행될 때 neo 데이터베이스가 자동으로 실행되고 포트 7474의 컨테이너 내에서 사용할 수 있다는 의미입니까?
Docker 참조 읽기 ( https://docs.docker.com/reference/builder/#from 참조 ) 다음을 참조하십시오.
FROM은 여러 이미지를 만들기 위해 단일 Dockerfile 내에 여러 번 나타날 수 있습니다. 각각의 새로운 FROM 명령 이전에 커밋에 의해 출력 된 마지막 이미지 ID를 기록해 두십시오.
여러 이미지를 만들고 싶습니까? 내가 원하는 것은 neo4j 및 node.js와 같은 다른 이미지의 내용을 포함하는 단일 이미지를 갖는 것입니다.
참조 매뉴얼에서 종속성을 선언하는 지시문을 찾지 못했습니다. 내 이미지를 실행하기 위해 호출 컨텍스트가 먼저 필요한 이미지를 설치해야하는 RPM과 같은 종속성이 없습니까?
헷갈리네요 ...
기본 이미지 란 무엇입니까?
파일 세트, EXPOSE
'd 포트 ENTRYPOINT
및 CMD
. 지시문
으로 새로 Dockerfile
시작하여 파일을 추가하고 해당 기본 이미지를 기반으로 새 이미지를 빌드 할 수 있습니다 FROM
. 다음에 언급 된 이미지 FROM
는 새 이미지의 "기본 이미지"입니다.
지시문
neo4j/neo4j
에서 선언FROM
하면 이미지가 실행될 때 neo 데이터베이스가 자동으로 실행되고 포트 7474의 컨테이너 내에서 사용할 수 있다는 의미입니까?
덮어 쓰지 않는 경우에만 CMD
및 ENTRYPOINT
.
그러나 이미지 자체만으로도 충분 합니다. 특정 용도로 FROM neo4j/neo4j
관련된 파일을 추가해야하는 경우 .neo4j
neo4j
FROM
단일 Dockerfile 내에서 여러 번 나타날 수 있습니다.
하지마: 어쨌든 해당 "기능"을 제거하라는 제안이 있습니다 ( 문제 13026 ).
문제 14412에 언급 된 내용 :
다중 사용
FROM
은 실제로 기능이 아니지만 버그입니다 (오, 제한이 엄격하고FROM
Dockerfile에서 다중 사용 사례가 거의 없습니다).
2017 년 5 월 (18 개월 후), docker (moby) 17.05-ce로 업데이트 합니다.
단일 Dockerfile에서 여러 FROM을 사용할 수 있습니다.
" Builder 패턴 vs. Docker의 다단계 빌드 "( Alex Ellis 작성 ) 및 Tõnis Tiigi의 PR 31257 을 참조하십시오 .
전에:
빌더 패턴에는 두 개의 Docker 이미지 사용이 포함됩니다. 하나는 빌드를 수행하고 다른 하나는 첫 번째 이미지의 빌드 체인 및 도구에 대한 패널티없이 첫 번째 빌드의 결과를 제공합니다.
후:
일반 구문에는
FROM
Dockerfile 내에 추가 시간을 추가하는 것이 포함됩니다FROM
.이 중 마지막 문이 최종 기본 이미지입니다. 중간 이미지에서 아티팩트 및 출력을 복사하려면COPY --from=<base_image_number>
.
Dockerfile의 첫 번째 부분 :
FROM golang:1.7.3 as builder
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html
COPY app.go .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
동일한 (!) Dockerfile 의 두 번째 부분 :
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /go/src/github.com/alexellis/href-counter/app .
CMD ["./app"]
결과는 두 개의 이미지, 하나는 빌드 용이고 하나는 결과 앱만 포함됩니다 (훨씬 더 작음).
REPOSITORY TAG IMAGE ID CREATED SIZE
multi latest bcbbf69a9b59 6 minutes ago 10.3MB
golang 1.7.3 ef15416724f6 4 months ago 672MB
참고 URL : https://stackoverflow.com/questions/33322103/multiple-froms-what-it-means
'IT TIP' 카테고리의 다른 글
독 메뉴에서 xcode 최근 프로젝트 제거 (0) | 2020.10.25 |
---|---|
node.js : '요청'모듈을 찾을 수 없습니다. (0) | 2020.10.25 |
자바 스크립트 : 모듈 패턴 대 생성자 / 프로토 타입 패턴? (0) | 2020.10.24 |
외부 CSS와 인라인 스타일 성능 차이? (0) | 2020.10.24 |
타겟팅 위치 : 현재 '멈춤'상태에있는 고정 요소 (0) | 2020.10.24 |