본 가이드는 컨테이너 가상화 기술인 도커(Docker)를 활용하여 전자정부 표준프레임워크의 기반 응용프로그램(Web Application)의 도커 이미지 제작 가이드를 제공한다.
본 가이드의 사용자는 기본 도커(Docker)에 대한 기본적인 지식 있는다는 것을 가정하였다.
표준프레임워크 개발환경에 도커 이미지 제작을 통하여 아래와 같은 특징으로 적용 효과를 제시한다.
1. 전자정부 표준프레임워크 기반 응용프로그램의 도커(Docker) 이미지 제작
2. 제작된 도커 이미지 실행 및 테스트
본 가이드의 진행을 위한 구현도구 및 환경정보는 다음과 같다.
항목 | 설명 | 비고 |
---|---|---|
OS | Windows 11 home | |
개발환경 | eGovframe v.4.2.0 | jdk1.8, Tomcat 9 |
도커 | 윈도우용 Docker Desktop v4.26.0 (Docker Engine 24.0.7) | 윈도우 환경의 경우 Docker Toolbox를 통한 가상 도커환경 설정 |
응용프로그램의 Docker 이미지화를 위하여 2가지의 방법을 제시한다.
$ docker version
[참고] 본 가이드의 도커 버전과 동일 할 필요는 없으나 이하 버전 및 최신 버전에서 가이드에서 사용한 API 및 구조가 변경 될 수 있으며, 도커 버전별 상의한 API 및 구조는 도커 사이트에서 확인 할 수 있다.
표준프레임워크 응용프로그램은 표준프레임워크의 템플릿을 활용하며, Docker파일(Dockerfile)을 추가 및 실행가능한 이미지를 제작하여 테스트를 한다.
# 베이스 이미지 설정 FROM tomcat:9.0 # 작성자 정보 LABEL eGovframe Center # WAR 파일을 Tomcat의 웹 애플리케이션 디렉터리에 추가 COPY ./target/docker_webtest-4.2.0.war /usr/local/tomcat/webapps/ # Tomcat을 포어그라운드에서 실행 CMD ["catalina.sh", "run"]
(예: C:\eGovFrameDev-4.2.0-64bit\workspace\docker_webtest)
$ cd C:/eGovFrameDev-4.2.0-64bit/workspace/docker_webtest $ ls Dockerfile pom.xml src/ target/
(예: 도커 이미지명을 egovframe/webtest 이며, 테그를 v1로 설정한다.)
$ docker build –t egovframe/webtest:v1 .
(예: Tomcat의 기본 포트를 8080 사용하여 컨테이너에서도 동일한 포트를 사용하도록 설정한다.)
$ docker run –t –i –p 8080:8080 egovframe/webtest:v1
메이븐 빌드 시 플러그인을 사용하여 빌드된 war파일과 베이지 이미지를 docker daemon에 직접 주입한다.
<!-- Docker Maven Plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.10</version> <configuration> <imageName>egovframe/webtest</imageName> <baseImage>tomcat</baseImage> <entryPoint>["catalina.sh", "run"]</entryPoint> <resources> <resource> <targetPath>/usr/local/tomcat/webapps/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.war</include> </resource> </resources> <dockerHost>https://192.168.99.100:2376</dockerHost> <dockerCertPath>C:\\Users\\[컴퓨터사용자이름]\\.docker\\machine\\certs</dockerCertPath> </configuration> </plugin> <!-- end Docker Maven Plugin -->
(예: C:\Users\[컴퓨터사용자이름]\.docker\machine\certs)
Docker Tooling을 활용한 도커 이미지 제작은 아래 링크의 “사용법 5. 프로젝트와 통합”을 참조한다.
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev4.2:dep:build_tool:docker_tooling
https://docs.docker.com/engine/installation/linux/ubuntulinux/ 가이드에 맞추어 설치
$ docker run hello-world
리눅스 환경의 도커에 SSL(HTTPS) 통신을 하기 위해서는 클라이언트 측에서 인증서(CA-Certification)가 있어야 하며 Openssl 통하여 서버키 및 클라이언트용 키를 생성하여 접속이 가능하다.
아래의 내용을 참조하여 리눅스 내 Docker 설정 및 인증서를 활용할 수 있다.