DockerFile 을 이용하여 나만의 Docker Image [Tomcat+Jenkins] 만들기
[설치 구성 : Centos 7.x, Tomcat 9.x,Jenkins 2.319.2] docker-compose.yml 설정 포함
Last updated
Was this helpful?
2022년 NHN Cloud 무료 교육일정 :
2022년 NHN Cloud 행사/프로모션 정보 공유 :
1. 먼저 알아 두기
1.1 DockerFile 이란?
DockerFile 은 코드의 형태로 인프라를 구성하는 방법을 텍스트 형식으로 저장해 놓은 파일이며 docker build 를 사용하여 자신만의 이미지를 만들 수 있다.
1.2 Docker Build 란?
DockerFile 및 컨텍스트로부터 이미지를 빌드하는 Docker 명령
1.3 Docker-Compose 란?
Compose는 멀티 컨테이너 도커 애플리케이션을 정의하고 실행하는 도구이다. YAML 파일을 사용하여 애플리케이션의 서비스를 구성하며 하나의 명령을 가지고 모든 컨테이너의 생성 및 시작 프로세스를 수행한다.
1.4 Jenkins 란?
2. DockerFile을 이용하여 만들어 보자!!!
2.1 서비스 설계 구성
구분
Service
Docker Hub Base Image
Centos 7.9.2009
Developer
OpenJDK11
Service
Tocmat 9.0.8
Jenkins Src
Jenkins 2.319.2
Service Port
80
2.2 dockerfiles 폴더 구성
폴더 및 파일
설명
dockerfile
DockerFile Build 파일
apache-tomcat-9.0.8-pre-install.tar.gz
Tomcat 설정 및 Jenkins 압축 파일
./conf/context.xml
Tomcat Manager 접근 제어 설정
./conf/server.xml
Tomcat Service 포트 설정
./conf/tomcat-user.xml
Tomcat Manager User/Password 설정
docker-compose.yml
docker-compose 실행 파일
2.3 Docker Image 만들기(Tomcat + Jenkins)
dockerfile
FROM centos:7.9.2009
#서버 시간 설정
ENV TZ Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#서버 홈폴더 설정
RUN mkdir /home/jenkins
#서버 yum update 및 openjdk 설치
RUN yum update -y && yum install epel-release java-11-openjdk-devel -y
#tomcat+jenkins 압축 파일 복사
COPY apache-tomcat-9.0.8-pre-install.tar.gz /home/jenkins/apache-tomcat-9.0.8.tar.gz
#압축 해제
RUN cd /home/jenkins && tar -zxvf apache-tomcat-9.0.8.tar.gz
#서비스 포트 지정
EXPOSE 80
#작업 폴더 설정
WORKDIR /home/jenkins
#Tomcat 서비스 시작
CMD ["/home/jenkins/apache-tomcat-9.0.8/bin/catalina.sh", "run"]
2.4 DockerFile Build 후 Docker Hub 업로드 하기
Step1. docker loign
Step2. 작성 한 DockerFile 에서 빌드 하기
• docker build -t tomcat_mariadb:jenkins1.0 .
• docker images ## 로컬에 저장된 Docker Images 확인
Step3. 로컬에 만든 이미지 실행 및 확인
• docker run -d -p 80:80 tomcat_mariadb:jenkins1.0
Step4. Docker Hub 이미지 업로드
• docker tag tomcat_mariadb:jenkins1.0 bchwang/tomcat_mariadb:jenkins1.0
• docker push bchwang/tomcat_mariadb:jenkins1.0
Step5. Docker Hub 에 등록된 이미지 확인
• Docker Hub 에 개인 개정으로 로그인 후 Docker Image 및 Tag 확인
Step6. Docker Hub 에 등록된 이미지로 실행 하기
• docker run -d -p 80:80 bchwang/tomcat_mariadb:jenkins1.0
3. docker 를 이용하여 실행 하기
3.1 docker 실행 하기
# docker run --name project1 -d -p 80:80 bchwang/tomcat_mariadb:jenkins1.0
Unable to find image 'bchwang/tomcat_mariadb:jenkins1.0' locally
jenkins1.0: Pulling from bchwang/tomcat_mariadb
Digest: sha256:a44086d7242cd88c5e1abef7a99c5a5bd5fe1762e5eaa8ce58c2232e75eeff05
Status: Downloaded newer image for bchwang/tomcat_mariadb:jenkins1.0
e54875e866040c63e383de6424a516398ebe7ef3235994d4a2d9c9ffa895cd49
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2c12c471ad47 bchwang/tomcat_mariadb:jenkins1.0 "/home/jenkins/apach…" 24 seconds ago Up 22 seconds 0.0.0.0:80->80/tcp project1
# docker logs -f project1
07-Feb-2022 13:29:42.336 INFO [Finalizing set up] jenkins.install.SetupWizard.init
*************************************************************
*************************************************************
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
75c34fe2059a4ec69b1d0e6e03e3ffed #### Jenkins 초기 비밀번호
This may also be found at: /root/.jenkins/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
3.2 Tomcat+Jenkins 설정 확인
3.2.1 Tomcat 설정 확인(server.xml)
Tomcat 서비스 포트(80) 설정 하기 위해 server.xml 파일을 수정 하여 적용
version: '2'
services:
tomcat_jenkins1.0:
image: bchwang/tomcat_mariadb:jenkins1.0
ports:
- '80:80'
volumes:
# data 폴더와 instance 폴더 동기
- "./data:/home/jenkins/data:rw"
# context.xml 파일(Tomcat Manager 접근 제한 설정)
#- "./conf/context.xml:/home/jenkins/apache-tomcat-9.0.8/webapps/manager/META-INF/context.xml"
# server.xml 파일(Tomcat Serivce Port 설정)
#- "./conf/server.xml:/home/jenkins/apache-tomcat-9.0.8/conf/server.xml"
# tomcat-users.xml 파일(Tomcat Manager User/Password 설정 :: admin / 1234)
#- "./conf/tomcat-users.xml:/home/jenkins/apache-tomcat-9.0.8/conf/tomcat-users.xml"
4.2 docker-compose 실행 방법
# docker-compose up -d
Creating network "jenkins_default" with the default driver
Creating jenkins_tomcat_jenkins1.0_1 ... done
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
450fb13bace8 bchwang/tomcat_mariadb:jenkins1.0 "/home/jenkins/apach…" 5 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp jenkins_tomcat_jenkins1.0_1
# docker exec -it 450fb13bace8 /bin/bash
[root@450fb13bace8 jenkins]# ls
apache-tomcat-9.0.8 apache-tomcat-9.0.8.tar.gz data
소프트웨어 개발 시 (continuous integration) 서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해 준다.