Think Twice

Memorandum

Hello docker 〜その3

f:id:mix-juice001:20150709141558p:plain

applicationとpostgresをcontainerで起動できたので、
Legacy container linksを参考に今回はそれを接続する。

postgresは前回と全く同じ。
起動するときにオプションの-P も -p もつけない。

postgres docker container 起動

$ docker run --rm --name mydb myPostgres

Web Application の起動

$ docker run -P --name myapp --link mydb:db setoguchi/site-manager 
--link mydb:db

の部分でコンテナ間のリンクをdockerに指示できる。

--link コンテナ名:alias

このように起動すると
aliasを大文字にした変数名で環境変数にアクセスできる。

<name>_PORT_<port>_<protocol>
上記の例でいくと、
${DB_PORT_5432_TCP_ADDR}
${DB_PORT_5432_TCP_PORT}

のような変数がapplicationのコンテナに設定されるので、これを設定ファイル等に記載すると接続することができる。

spring bootだと、起動時の引数で指定できるので、Dockerfileを下記のように記載するとよい。

CMD ["java", "-jar", "/myApplication.jar",\
 "--spring.datasource.initialize=false",\
 "--spring.datasource.driverClassName=org.postgresql.Driver",\
 "--spring.datasource.url=jdbc:postgresql://${DB_PORT_5432_TCP_ADDR}:${DB_PORT_5432_TCP_PORT}/mydatabase",\
 "--spring.datasource.username=scott",\
 "--spring.datasource.password=tiger"]