[Docker, SpringBoot, Maven] 스프링부트 도커 이미지로 메이븐 빌드하여 로컬 실행해보기
메이븐에서 검색해보면 스포티파이에서 만든 인기있는 도커 클라이언트가 있다.
https://mvnrepository.com/artifact/com.spotify/docker-client
스프링부트에 이걸 붙여서 로컬에서 메이븐 빌드하여 간단히 도커 이미지로 실행해보자.
1. 메이븐에 아래와 같이 붙여본다.
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<docker.image.prefix>springboot</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin -->
</plugins>
</build>
- 리소스 설정 부분을 보면 도커디렉토리를 src/main/docker로 명시한 것을 볼 수 있다.
실제로 폴더를 만들고 Dockerfile을 생성해주었다.
메이븐 구성에 따라 생성되는 jar의 이름을 아래 잘 바꿔 넣어줘야 한다.
FROM openjdk:8-jdk-alpine VOLUME /tmp ADD htrucci-springboot-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
3. 메이븐 빌드
clean package docker:build
- 당연히 도커가 설치되어있고 실행중이어야 오류가 안난다. *
4. 빌드된 컨테이너 확인
$ docker container ls -a
있다, 내가 빌드한 이미지가 추가되어있다. 위에서 설정은 이미지 네임으로.
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
5.
테스트를 위해 도커내에서 간단히 스프링 부트를 구동시켜보자
8080포트로 맵핑해줄거고 두 명령어의 차이는 백그라운드 모드로 실행할 것인지의 차이임.
$ docker run -p 8080:8080 이미지이름 $ docker run -d -p 8080:8080 이미지이름
간단히 로컬에서 올려보았지만, 몇몇 과정을 자동화하는 기대치를 만족시키기 위해 문서를 잘 살펴볼 필요가 있겠다.
도커도 좀 더 봐야할 것 같구…
최근 댓글