Spring Boot 프로젝트를 git에서 소스를 받아 도커로 배포하려 한다.
환경
- Java 8
- Maven
- Spring Boot
- git, GitHub
- linux(devian)
- Docker
순서
- shell script 작성
- git에서 소스를 clone
- maven으로 소스 빌드
- 빌드된 spring boot 프로젝트 실행
- Dockerfile 작성
- maven, java8 도커 이미지 사용
- shell script 실행
- Dockerfile로 빌드
- 도커 이미지 실행
springboot-server-start.sh
#!/bin/bash
git clone https://github.com/ojwman/sbp-shopping-mall
cd sbp-shopping-mall
mvn package
cd target
java -jar sbp-shopping-mall-0.0.1-SNAPSHOT.jar
Dockerfile
FROM maven:3.3-jdk-8
ADD ./springboot-server-start.sh app.sh
ENTRYPOINT ["/bin/sh","app.sh"]
- FROM: maven3.3과 jdk8을 사용하는 이미지를 사용
- ADD: 현재 경로에 'springboot-server-start.sh'을 도커에 'app.sh'으로 추가
- ENTRYPOINT: Docker Container에서 최초로 실행할 명령어
Docker build
Dockerfile이 존재하는 경로에서 다음으로 도커 이미지를 빌드한다.
docker build --tag ojwgoodman/ojw-mall:0.3 .
- docker: 도커로
- build: 빌드해라
- --tag: 태그를
- ojwgoodman/ojwmall:0.3: 이미지명:태그
- .: 현재 디렉토리에 있는 Dockerfile 내용으로
Docker run
docker run -d -p 9090:9090 ojwgoodman/ojw-mall:0.3
- docker: 도커로
- run: 실행해라
- -d: 데몬으로
- -p: 포트설정
- 9090:9090: 도커포트:리눅스포트
- ojwgoodman/ojw-mall:0.3: 이미지명:태그
끝
굳이 매 컨테이너 실행마다 clone build를 반복하는 특별한 이유가 있나요?