BOOK REVIEW/실전 스프링 부트 워크북

[실전 스프링 부트 워크북] 스프링 부트와 도커

수학도 2021. 8. 20. 20:33

Dockerfile

src/main/resources/docker/Dockerfile 생성

FROM java:8
VOLUME /tmp
ADD spring-boot-journal-0.0.1-SNAPSHOT.war journal.war
ENV SPRING_PROFILES_ACTIVE docker
EXPOSE 8443
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/journal.war"]
  • FROM java:8 

OpenJDK 8 버전이 포함된 9 이미지를 가져온다.

  • VOLUME

스프링 부트는 톰캣용 작업 폴더를 자동 생성하기 때문에 볼륨을 만들어야 한다.

  • ADD 아티팩트ID + 버전 + 확장자

컨테이너 루트에 WAR/JAR 파일을 각각 journal.war.journal.jar 파일로 복사

  • ENV

도커 프로파일을 켜는 필요한 환경변수 추가

  • EXPOSE

SSL 전용 8443 포트로 서비스한다.

  • ENTRYPOINT

컨테이너 시동 시 실행할 정보를 선언한다.

 

 

pom.xml 

<properties>태그 안에 <docker.image.prefix> 태그를 넣어준다.

<docker.image.prefix>springboot</docker.image.prefix>

<plugins> 태그 안에 아래의 플러그인을 추가하자.

<plugin>
	<groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.1</version>
    <configuration>
    	<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
        <dockerDirectory>src/main/resources/docker</dockerDirectory>
        <resources>
        	<resource>
            	<targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.war</include>
            </resource>
        </resources>
    </configuration>
</plugin>

<dockerDirectory>에 Dockerfile 위치를 작성한다.

 

 

빌드 및 이미지 생성

$ ./mvnw clean package docker:build -DskipTests=true
$ docker run -p 8443:8443 springboot/spring-boot-journal

 

브라우저를 열고 스프링 부트 앱 확인 (도커화)