ConfigServer プロジェクト作成
で、おもむろにプロジェクト作成。Spring Starter ProjectからCloud ConfigのConfig Serverを選択した。で、Githubにpushしといた。
Config Server 実装
実装っていっても、アノテーションをいっこつけて、設定ファイルにGithubを見に行くように書いといただけだけ。
@SpringBootApplication @EnableConfigServer public class ConfigApplication { public static void main(String[] args) { SpringApplication.run(ConfigApplication.class, args); } }
spring: application: name: configserver cloud: config: server: git: uri: https://github.com/bufferings-sandbox/config-repo server: port: 8888
Config Repo 作成
その設定ファイルが置いてあるGithubリポジトリを作っておいた。
https://github.com/bufferings-sandbox/config-repo
foo.yml
value1: foo1
Config Server 起動
あ、どうやって情報にアクセスしたらいいんだったっけ?ってしばらくうろうろ。こうか。
$ curl -s localhost:8888/foo/default | jq { "name": "foo", "profiles": [ "default" ], "label": "master", "version": "b5fce320ba66b08b0396e0d711088cdf0357ec3e", "propertySources": [ { "name": "https://github.com/bufferings-sandbox/config-repo/foo.yml", "source": { "value1": "foo1" } } ] }
おー。読めた。
Dockerで動かしてみよう
と思い。Dockerfile作成。このドキュメントほぼそのまま
Getting Started · Spring Boot with Docker
FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD config-0.0.1-SNAPSHOT.jar app.jar RUN sh -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
それから、pomにプラグインを設定。
<properties> ... <docker.image.prefix>bufferings</docker.image.prefix> </properties> <build> <plugins> ... <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</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> </plugins> </build>
で、ビルドー。
$ mvn package docker:build
からの実行ー。
$ docker run --rm -p 8888:8888 bufferings/config
で、叩いてみたら動いた(∩´∀`)∩ワーイ。
$ curl -s localhost:8888/foo/default | jq { "name": "foo", "profiles": [ "default" ], "label": "master", "version": "b5fce320ba66b08b0396e0d711088cdf0357ec3e", "propertySources": [ { "name": "https://github.com/bufferings-sandbox/config-repo/foo.yml", "source": { "value1": "foo1" } } ] }
Dockerhubにpushしてみる
かなーと思って、こうやってみた。
$ mvn package docker:build -DpushImage
ら、unauthorizedってエラーが出たので、このあたりを読んでみて
https://github.com/spotify/docker-maven-plugin
この1行を足してみたら動いた。今ログインしてるユーザーでpushするってことなのかな。
<useConfigFile>true</useConfigFile>
おー。pushされてた。
https://hub.docker.com/r/bufferings/config/
今日はここまでー。
まとめ
てことで、今日はDockerで動くConfigServerを作ってDockerhubにpushしといた。って感じ。おやす。
次は
GithubからDockerhubへの自動ビルドが設定できないか調べてみようかなー。って、あれ?そうなると、mvnでpushImageする設定いるんかな?・・・そのへんも考えよう。
参考
追記 2016/09/27
これ、書くの忘れてた!
JJUG CCC 2016 fall のCfP応募しました。聞きたいなって思ってくれた方は👍くださいー!https://t.co/eNsmo62DHG
— しーば@10/22 楽天大阪 (@bufferings) September 26, 2016
んで、続きかいた。