僕はSpring Cloudに関して、Kennyのこのリポジトリを参照しまくってるんだけど。
github.com
Dockerの設定が入ってるので参考にした。
Repository
ここでやっといたよ。
github.com
やることは
- pom.xml にビルド設定を書く
- Dockerfile を書く
- push する
これだけ。
1. pom.xmlにビルド設定を書く
例えば僕のリポジトリの config-service ならここ
https://github.com/bufferings/msa/blob/master/config-service/pom.xml#L61-L77
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<useConfigFile>true</useConfigFile>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>${basedir}/src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
spotifyのdocker-maven-plugin使ってるす。
github.com
useConfigFile
useConfigFile
についてはここに書いてる。
https://github.com/spotify/docker-maven-plugin#using-docker-config-file-for-authentication
Another option to authenticate with private repositories is using dockers ~/.docker/config.json.
ログインしといたら ~/.docker/config.json
を使ってくれるってことね。
${docker.image.prefix}
プロパティを bufferings1
で定義しといた。
<properties>
<projectbuildsourceEncoding>UTF-8</projectbuildsourceEncoding>
<projectreportingoutputEncoding>UTF-8</projectreportingoutputEncoding>
<javaversion>1.8</javaversion>
<dockerimageprefix>bufferings1</dockerimageprefix>
</properties>
finalName
も
Dockerfileでプロジェクト毎にとか、バージョンが変わる毎に内容を書き換えるの面倒だったので finalName
を固定しといた。僕は今回特に finalName
を使ってないから別にいっかなって思って。
<finalName>app</finalName>
2. Dockerfileを書く
dockerDirectory
で指定した src/main/docker
の下に Dockerfile
を置いとく。
FROM anapsix/alpine-java:8
VOLUME /tmp
ADD app.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
3. push する
ここを参考にして
https://github.com/spotify/docker-maven-plugin#usage
docker login
したあとに、こうしたら
mvn clean package docker:build -DpushImage
Docker Hub に push される。(∩´∀`)∩ワーイ
おまけ .travis.yml
.travis.yml
にこんな感じで書いといた
sudo: required
language: java
jdk:
- oraclejdk8
cache:
directories:
- $HOME/.m2
services:
- docker
script:
- docker login -e="$DOCKER_EMAIL" -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
- mvn -f auth-service clean package docker:build -DpushImage
- mvn -f config-service clean package docker:build -DpushImage
- mvn -f discovery-service clean package docker:build -DpushImage
- mvn -f edge-service clean package docker:build -DpushImage
- mvn -f kaiten-sushi-web clean package docker:build -DpushImage
- mvn -f user-service clean package docker:build -DpushImage
https://hub.docker.com/u/bufferings1

(∩´∀`)∩ワーイ