2016-07-03 4 views
9

응용 프로그램을 실행하는 Docker Hub 컨테이너가 있습니다. 일반적으로 소스 자식 ORB를 복제하여 응용 프로그램을 실행하지만 특정 버전을 실행하려는 경우 응용 프로그램은 다양한 릴리스에 태그를 지정합니다. 예를 들면 다음과 같습니다.Docker Hub 버전에 태그를 지정하는 가장 좋은 방법은 무엇입니까?

git clone https://github.com/author/application.git 
git checkout release-1.0.0 

Docker 허브 관리자로서 컨테이너의 소프트웨어 릴리스를 미러링하고 싶습니다. 릴리스가 나올 때 수동으로 수행하는 것 외에 다른 옵션이 있습니까?

이 지금 내 Dockerfile이 같은 포함 :이 예에서는

ENV APP_VER=2.0.0 
RUN git clone ...; git checkout ${APP_VER} 

을, 나는 2.1.0에 APP_VER을 설정하고 도커 허브가 지원하는 고정 표시기 파일의 태그 지점을 유지하지만 것 repo를 변경하면 각 분기의 Dockerfile을 어떻게 변경하지 않을지 확실하지 않습니다.

+1

Github에 태그가 지정되어 있으면 태그가있는 파일에 링크 할 때처럼 파일이 변경되지 않을까요? 예 : [nginx] (https://hub.docker.com/r/_/nginx/). – ldg

+0

그래, nginx가 한 것처럼 보이는 각 버전에 대한 파일을 변경해야합니다. – Lizbeth

답변

2

당신은 당신이, 부두 노동자 허브의 자동화 된 빌드를 통해 및 빌드 설정에 설명하여 Github에서 태그 이름도커 태그 이름 사이에 일치하는 패턴을 설정하는 일을 할 수 있어야합니다. 와일드 카드와 변수 {sourceref}`, "소스 분기/태그 이름을 참조하는"을 사용할 수 있습니다.

Github 태그와 일치하는 Docker 태그로 새 이미지를 누를 때마다 일치하는 Dockerfile을 가져옵니다. 이전 태그는 변경되지 않습니다. 당신이 언급 그래서 누군가가 기준으로 태그를 사용하여 이전 도커 이미지와 일치 Github에서 코드를 뽑을 수 :

ENV APP_VER=2.1.0 
RUN git clone ... app.git; git -C app checkout ${APP_VER} 

을이 경우에, 당신이 도커 허브 가치와 각 태그에 맞게 설정 한 가정 (도커 이미지와 Github)은 2.1.0

입니다. "각 브랜치"가 의미하는 바가 확실하지 않습니다. 특히 SVN에 익숙하다면 혼란 스러울 수 있습니다. git에서 태그는 특정 커밋이나 특정 커밋 (또는 특정 시점)에 묶여 있지 않으므로 태그를 검색 할 때 커밋이 있던 시점과 동일한 버전의 코드가 항상 사용됩니다 만든. (일반적으로 릴리스가 절단 된 것과 같은 시간입니다.)

관련 문제