반응형
Spring boot 프로젝트를 docker image로 만들어 보겠습니다.
간단한 spring boot 프로젝트 생성
HomeController
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HomeController {
@GetMapping("/hello")
public String hello(@Value("${test.customName}") String name) {
return "hello, " + name + "!";
}
}
application.yml
test:
customName: ${CUSTOM_NAME}
"/hello"로 요청이 들어오면application.yml에 미리 정의한test.customName을 함께 출력하는 메소드입니다.
jar 파일 생성하기
Gradle -> build -> bootJar를 실행하면 build/libs/**.jar 가 생성됩니다.

Dockerfile 생성
docker image를 만들기 위해서는 Dockerfile이라는 파일에 어떤 base 이미지를 사용해서 만들지.. 등등을 명시 해줘야합니다.
- 프로젝트 최 상단 디렉토리에
Dockerfile생성
#!/bin/bash
# base 이미지 설정
FROM openjdk:8-jre-alpine
# jar 파일 위치를 변수로 설정
ARG JAR_FILE=build/*.jar
# 환경변수 설정
ENV CUSTOM_NAME default
# jar 파일을 컨테이너 내부에 복사
COPY ${JAR_FILE} test-app.jar
# 외부 호스트 8080 포트로 노출
EXPOSE 8080
# 실행 명령어
CMD ["java", "-Dtest.customName=${CUSTOM_NAME}", "-jar", "test-app.jar"]
docker image 생성
위에서 만든 Dockerfile을 기반으로 docker image를 생성해보도록 하겠습니다.
docker build
$ docker build -t {name}/{image} .
만약 Docker hub에 이미지를 업로드 하고 싶다면 name을 docker id와 동일하게 설정해야 합니다.
docker scan 에러

도커 이미지를 생성하는 도중 docker scan을 실행하라는 메세지가 떴습니다.
해결 방법을 찾아보니 alpine 이미지를 scan해주면 해결된다고 합니다.
docker scan
$ docker scan alpine

- 다시
docker build
$ docker build -t {name}/{image} .
- 이미지 조회
$ docker images
정상적으로 잘 생성된 것을 확인할 수 있습니다!

실행해보기
$ docker run --it -e CUSTOM_NAME=iseunghan --name test-docker -p 8080:8080 {name}/{image}

- Docker 실행 시 넘겨줬던 환경변수가 잘 전달되어 출력된 것을 확인할 수 있습니다.
반응형