소개

Bamboo task중 Docker task를 이용하여 Docker build 부터 Docker push를 통한 Docker Hub에 등록하는 과정까지를 알아보도록 하겠습니다.

사전준비

Spring boot application을 sample로 하여 war로 package된 application을 대상으로 진행합니다.

하여 아래와 같은 상황을 가정합니다.

  • spring-boot 를 이용한 web application 이 war로 build되도록.
  • Dockerfile에 해당 war가 tomcat image를 통해 구동되도록(좀더 쉽게 spring batch로 실행하여도 무방)

Sample은 다음 repository에서 확인해볼수 있습니다.

사용법

사전준비사항에서 언급된 docker image 준비가 완료되면 Dockerfile을 해당 repository에 함께 push한후 Docker task 추가를 진행합니다.

아래와 같이 docker plugin를 task에서 검색하여 task로 추가합니다.


추가후 아래와 같은 설정화면이 나타나며 아래와 같은 설정을 추가합니다.

  • Build 과정 :
    • Source Code Checkout
    • Maven 3.x
  • Containerize 과정 :
    • Docker = Build a Docker image
    • Docker = Push a Docker image to a Docker registry


위와 같이 4가지 방식의 task를 설정하면 docker image build 및 push가 가능합니다.

앞서 첨부했던 링크에 있는 Dockerfile 을 참고용으로 첨부합니다.

# 간단히 설명하자면 tomcat 이미지를 pull 받아와 tomcat내의 webapps directory에 ROOT.war파일로 복사하게 하여 해당 application이 
# tomcat을 통해 loading되어지게 하는 것이다.
# 당시 사용되는 demo-0.1.1.war파일의 경우 앞선 build plan에 의해 build 후 생성된 war 파일이다.

FROM tomcat:8.5.47-jdk8-openjdk

MAINTAINER jacobbaek@osci.kr

RUN rm -Rf /usr/local/tomcat/webapps/ROOT
COPY target/demo-1.0.0.war /usr/local/tomcat/webapps/ROOT.war

실제로 인지해야 하는 내용은 Docker task를 사용하는 부분입니다.

먼저 Docker image build를 수행하는 과정입니다.

  1. Command 리스트 박스에서 Build a Docker image를 선택
  2. 또한 Repository에는 실제 namespace와 image name으로 사용될 내용을 작성
  3. 앞서 source code repository내에 Dockerfile을 작성해두었기에 "user an existing Dockerfile located in the task's working directory"를 선택
    만약 Dockerfile을 작성하지 않고 직접 내용을 기입하고자 할 경우 "Specify the Dockerfile contents"를 선택하여 기입


이후 Dockerhub에 image를 push 하는 작업을 아래와 같이 수행합니다.

  1. Command 리스트 박스에서 Push a Docker image to a Docker registry 를 선택
  2. Docker hub를 선택
    만약 private 한 registry를 소유하고 있다면 Custom registry를 선택하여 해당 주소를 기입
  3. Repository에는 앞서 build 과정에서 입력하였던것과 동일한 namespace와 image name을 기입
  4. 마지막으로 Dockerhub의 ID/PW를 기입
    실제 내부적으로는 아래와 같은 명령을 통해 인증과정이 수행됩니다.

    # email의 경우 old docker에서만 기입(최신의 docker가 사용되는 환경이라면 빈칸으로 넘어가야 합니다.)
    docker login -u userid -p password 
    # 이미지 push
    docker push namespace/imagename
    # logout
    docker logout


이제 모든 준비작업은 완료되었습니다. build를 수행해보도록 합니다.

build plan 수행후 success가 되게 되면


아래와 같이 samplejavaweb이 dockerhub에 등록됨을 확인할 수 있습니다.


참고사이트


jacobbaek's profile image

jacobbaek

2019-11-05

Read more posts by this author