docker runで上げたコンテナに docker-compose upで上げたコンテナをlinkする

なんでそんなことしたかったの

  • もともとコンテナをitamaeスクリプトでdocker runして立ち上げていた
    • オプションが増えてきてコマンドが非常に長くなった
  • 何を書いているのかわかりにくかったのでdocker-compose.ymlにオプションを書いて起動することに

現状

すでに上がっているコンテナ

  • mariadb
    • mysql互換なので
  • redis
    • ログ
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
acb7e507f8e2 mariadb "docker-entrypoint.s…" 8 days ago Up 8 days 0.0.0.0:3306->3306/tcp mariadb_1
a3240056a0a3 redis:4.0.8 "docker-entrypoint.s…" 8 days ago Up 8 days 0.0.0.0:6379->6379/tcp redis_1

docker-compose upで上げるコンテナ

  • javaアプリ
    • Spring BootでDBにつないでる
    • commandオプションにて起動

docker runのとき

docker-compose up

上をdocker-compose upにする

docker-compose.dev.yml

実行

これで起動したところmariadbにうまくつながらなかった

外部のコンテナにつなぐにはexternal_linksを使うらしい
https://docs.docker.com/compose/compose-file/compose-file-v2/#external_links

そもそもlinksがレガシーなオプションだから使わないほうがいいらしい
https://docs.docker.com/compose/compose-file/compose-file-v2/#links

linksのところを変えた

変わらなかった
ドッカーのネットワーク確認

同じネットワークには入ってる

hostsに追加してみる
https://docs.docker.com/compose/compose-file/compose-file-v2/#extra_hosts-1

今度はうまくDBにつながってくれた
でもDBのコンテナ再起動してip変わってしまったらyaml書き換える必要がありそう
ip直打ちじゃなくしたいですね

参考
https://mag.osdn.jp/17/03/28/190000/2

スポンサーリンク
レクタングル大
レクタングル大

シェアする

フォローする

%d人のブロガーが「いいね」をつけました。