僕はSpring Cloudに関して、Kennyのこのリポジトリを参照しまくってるんだけど。
Dockerの設定が入ってるので参考にした。
Repository
ここでやっといたよ。
やることは
- 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使ってるす。
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> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <docker.image.prefix>bufferings1</docker.image.prefix> </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
(∩´∀`)∩ワーイ