hatenob

プログラムって分からないことだらけ

Spring BootのアプリケーションをDockerで動かす

動かすだけなら簡単にできた。
Getting Started · Spring Boot with Docker
をなぞるだけです。

環境

  • OpenJDK 1.8
  • Maven 3.0.5

どちらも、CentOS7でyumで入れました。

Dockerイメージの作成

Mavenプラグインをpom.xmlに追加。

  <plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.2.3</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>

ここでdockerDirectoryとして参照している先にDockerfileを置く

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD demo-0.0.1.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

ADDしているjarは、実際に作ったjarの名前です。

あとは、

$ mvn package docker:build

するだけで、Dockerイメージが登録されます。
ただし、実行する時にdockerコマンドを実行できるユーザである必要があります。
root以外で実行したいときは以下などをご参考あれ。
10.5 root以外のユーザーにDockerコマンドの実行を許可

Dokcerコンテナの実行

こちらはもうそのままです。
先のpom.xmlでimageNameで指定したイメージ名で登録されているので、それを実行するだけ。

$ docker run -p 8080:8080 <イメージ名>

これで無事に起動します。
公式をなぞっただけですが、元となるイメージは別途用意したいところです。