Hello docker 〜その3
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"]