docker-composeで up, down を繰り返すとコンテナのIPアドレスが変わってしまいサブネットの範囲外のアドレスが割り当てられることがあり困りました。そんなときYAMLファイルでIPアドレスを固定できる記法が見つかったのでメモ。
Google先生に訊いたところこれが今のところベストプラクティスではないかと思ったので参考になりました。
[Docker / Docker Compose] コンテナのIPアドレスを固定する方法
docker-compose.yml でwordpressコンテナのIPアドレスを固定するには以下の通りです。
docker-compose.yml
version: '3' services: wordpress: image: wordpress:latest hostname: sanaru.info networks: wp000net1: ipv4_address: 172.31.0.3 ← (次回からコメントアウト ・ ・ networks: wp000net1: ipam: driver: default config: - subnet: 172.31.0.0/24 gateway: 172.31.0.1
確かにIPアドレスを決め打ちしてmysql や https-portal といった同一ネットワークのコンテナも毎回、同じIPアドレスで起動できるのはありがたいのです。では –scale オプションでコンテナを複数スケールアウトするとどうなるでしょう。おっしゃる通りです。error ‘address already in use’ で起動エラーが出てコンテナが死にます。今のところ、IP固定でネットワークを起動したら次回からは ipv4_address オプションをコメントアウトしておとなしく様子見するしか仕方なさそうです。
話は変わりますが、wordpress 起動後にサイトヘルスで「REST API でエラーが発生しました。」となるときの有効な対処方法を発見したのでシェアしたいと思います。
hosts ファイルへのIPアドレスの追記
vi /etc/hosts
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.31.0.3 sanaru.info 54.64.72.168 sanaru.info sanaru ← (追記
あらかじめコンテナに入ってvim をインストールするのが毎回面倒くさいというのもあり何とかならないかと思いましたが extra_hosts オプションでYAMLファイルから設定可能でした。
Docker Compose – docker-compose.yml リファレンス
docker-compose.yml
version: '3' services: wordpress: image: wordpress:latest hostname: sanaru.info extra_hosts: - "sanaru.info:54.64.72.168"
参考になれば幸いです。