[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 이미지이름
간단히 로컬에서 올려보았지만, 몇몇 과정을 자동화하는 기대치를 만족시키기 위해 문서를 잘 살펴볼 필요가 있겠다.
도커도 좀 더 봐야할 것 같구…
최근 댓글