[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>

 

  1. 리소스 설정 부분을 보면 도커디렉토리를 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 이미지이름

간단히 로컬에서 올려보았지만, 몇몇 과정을 자동화하는 기대치를 만족시키기 위해 문서를 잘 살펴볼 필요가 있겠다.
도커도 좀 더 봐야할 것 같구…

You may also like...

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.