今日のメモ:Spring Cloud ConfigのConfigServerを作ってDockerで動かしてみようと思い、

STS

最新のSTSを落とすところから始めてみた。ダウンロード遅かった。

https://spring.io/tools

ConfigServer プロジェクト作成

で、おもむろにプロジェクト作成。Spring Starter ProjectからCloud ConfigのConfig Serverを選択した。で、Githubにpushしといた。

https://github.com/bufferings-sandbox/config

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

これ、書くの忘れてた!

んで、続きかいた。

bufferings.hatenablog.com