[Docker] Spring Boot App 도커 적용
ITWeb/개발일반 2022. 3. 23. 10:49Springboot 로 WAS 생성 후 이를 도커 기반으로 생성, 실행 하기 위해서 관련 내용 기록 합니다.
관련 문서)
https://spring.io/guides/gs/spring-boot-docker/
https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/
과정)
1. 프로젝트를 빌드 해서 bootJar 를 생성 합니다.
보통 build/libs 에 생성이 됩니다.
2. Dockerfile 을 생성 합니다.
여기서 bootJar 를 ADD 해야 하는데 Dockerfile 과 같은 Depth 에 위치 하거나 하위에 위치해야 합니다.
상위에 bootJar 가 있을 경우 permission denied 에러가 발생 합니다.
3. Image 생성을 합니다.
$ docker build -t 이미지명:태그 .
태그 정보는 jenkins 에서 build number 를 부여 하거나 운영 규칙을 정해서 관리 합니다.
registry 를 운영하고 있으면 생성된 이미지를 등록 합니다.
4. docker-compose.yml 을 생성 합니다.
registry 를 운영하고 있으면 registry 에서 이미지를 받아 옵니다.
관련 예제 코드들은 위 문서에 잘 나와 있으니 참고 하면 됩니다.
아래는 그냥 참고용으로 올려 봅니다.
build.gradle)
...중략...
bootJar {
destinationDirectory=file('docker/libs')
enabled = true
}
...중략...
$ export TAG=1.0.0
$ docker build -t boot-app:$TAG .
Case 1) docker/Dockerfile
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=./libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
Case 2) docker/Dockerfile
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=./libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT java \
-jar app.jar
Case 3) docker/Dockerfile
ENV heapSize="-Xms2048 -Xmx2048m"
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=./libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","${heapSize}","-jar","/app.jar"]
Case 4) docker/Dockerfile
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=./libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT java \
${heapSize} \
-jar app.jar
ENTRYPOINT 추가 옵션)
-Djava.security.egd=file:/dev/./urandom \
-Dspring.profiles.active=local
docker-compose) docker/docker-compose.yml
version: '3.7'
services:
boot-app:
container_name: boot-app
image: boot-app:${TAG}
environment:
- TZ=Asia/Seoul
- env=local
- "heapSize=-Xms2048m -Xmx2048m"
ports:
- "8080:8080"
volumes:
- ./logs:/home/appuser/logs
sysctls:
- net.core.somaxconn=65000
restart: on-failure