SpringBoot에서 Docker 이미지를 생성하는 과정이다.
1. build.xml 파일 생성
- 프로젝트 디렉토리에 build.xml 파일 생성
- project name, packageAndBuild, push 부분 수정
- docker image 이름은 반드시 소문자로 작성해야함
<?xml version="1.0" encoding="UTF-8"?> <project name="NexClipperAgent" basedir="." default="package"> <target name="clean"> <exec osfamily="windows" executable="cmd"> <arg line="/c" /> <arg line="mvn clean" /> </exec> </target> <target name="package"> <exec osfamily="windows" executable="cmd"> <arg line="/c" /> <arg line="mvn install" /> </exec> </target> <target name="cleanAndPackage" depends="clean"> <exec osfamily="windows" executable="cmd"> <arg line="/c" /> <arg line="mvn install" /> </exec> </target>
<target name="packageAndBuild" depends="cleanAndPackage"> <exec osfamily="windows" executable="cmd"> <arg line="/c" /> <arg line="docker build -t jhhwang4195/nexclipperagent ." /> </exec> </target>
<target name="Push"> <exec osfamily="windows" executable="cmd"> <arg line="/c" /> <arg line="docker push jhhwang4195/nexclipperagent" /> </exec> </target>
</project> |
2. Dockerfile 생성
- 프로젝트 디렉토리에 Dockerfile 생성
FROM openjdk:8-jre-alpine ENV LANG ko_KR.UTF-8 ENV LANGUAGE ko_KR:en ENV LC_ALL ko_KR.UTF-8 MAINTAINER NexCloud VOLUME /tmp ADD ./target/NexClipperAgent-0.0.1.war NexClipperAgent.war RUN sh -c 'touch /NexClipperAgent.war' ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-3.b12.el7_3.x86_64/jre/ ENV PATH=$JAVA_HOME/bin:$PATH
ENV JAVA_OPTS="" CMD exec java -jar -Djava.security.egd=file:/dev/./urandom -jar /NexClipperAgent.war |
3. 프로젝트 빌드 및 Docker Image 생성
* build.xml 우클릭 -> Run As -> Ant Build -> Run
* 참고로 Docker Quickstart Terminal를 실행된 상태여야 한다. <관리자 권한 실행>
-> packageAndBuild 체크
-> Push 체크
자동으로 docker hub에 docker image까지 push된다.
즉, 4번 과정은 필요 없다.
4. docker build & push (수동으로 할 필요 없음)
Docker Quickstart Terminal를 실행해야함.
path: C:\springboot\NexClipperAgent
$ docker build -t jhhwang4195/nexclipperagent .
$ docker push jhhwang4195/nexclipperagent
5. DC/OS 서비스 생성
# Service
* SERVICE ID: /jhhwang/container-monitor
* CONTAINER IMAGE: jhhwang4195/nexclipperagent
* INSTANCES: 1
* CPUs: 1
* Memory (MibB): 512
* DOCKER ENGINE
# Networking
* Network Type: Bridge
* Container Port: 22222
# JSON 파일
{ "id": "/jhhwang/container-monitor", "backoffFactor": 1.15, "backoffSeconds": 1, "container": { "portMappings": [ { "containerPort": 22222, "hostPort": 0, "protocol": "tcp", "servicePort": 10130 } ], "type": "DOCKER", "volumes": [ { "containerPath": "/var/run/docker.sock", "hostPath": "/var/run/docker.sock", "mode": "RO" } ], "docker": { "image": "jhhwang4195/nexclipperagent", "forcePullImage": true, "privileged": false, "parameters": [ ] } }, "cpus": 1, "disk": 0, "instances": 1, "maxLaunchDelaySeconds": 3600, "mem": 512, "gpus": 0, "networks": [ { "mode": "container/bridge" } ], "requirePorts": false, "upgradeStrategy": { "maximumOverCapacity": 1, "minimumHealthCapacity": 1 }, "killSelection": "YOUNGEST_FIRST", "unreachableStrategy": { "inactiveAfterSeconds": 0, "expungeAfterSeconds": 0 }, "healthChecks": [ ], "fetch": [ ], "constraints": [ ] } |
※ 참고 사이트 ※
https://jinwooe.wordpress.com/2017/06/08/spring-boot-with-docker/
'Java > Springboot' 카테고리의 다른 글
스프링부트 학습 정리 자료 (0) | 2018.05.17 |
---|---|
CRUD Restful Web Service: RestTemplate을 이용 (0) | 2018.05.03 |