おれんじぺこ

母、ときどきwebエンジニア

docker-composeでホスト側IPを指定する方法

案件ごとにローカル環境を構築する際、最近はもっぱらdocker-composeを利用しています。
docker-composeを使うまではVagrantを使用してローカルでの開発環境を作っていたのですが、MacのアップデートでVagrantが突然動かなくなるというハプニングが(´;ω;`)

Vagrantが動かないんじゃどうしようもない!ってことで半ば仕方なしな感じでdocker-composeの利用を始めました。
最初の頃は使い方もわかっていなかったので色々戸惑っていましたが、慣れるとめっちゃ便利でdocker-composeで開発環境を作りまくる日々( ´艸`)

docker-compose、めちゃ便利なのですが、案件とともにdocker-composeで作る環境も増えてきて思ったことは、
みんなポート番号の管理ってどうしてるの?!
でした。

はじめは、
Webコンテナはホストは88ポートで、DBコンテナのホストは53306で・・・
みたいな感じで書いて、1つのプロジェクトのみ立ち上げていたのですが、だんだん面倒くさくなり、同時に複数のプロジェクトのコンテナを立ち上げておきたくなりました。
そうなってくると、問題になってくるのが「ポート番号」です。
数プロジェクトなら直近で作成したdocker-compose.ymlを参照してポート番号が被らないように設定できていたのですが、だんだんプロジェクトが多くなってくると「空いているポート番号なんだっけ?!」と混乱してきました( ノД`)

また、Webコンテナの場合、ポート番号を80以外にしていると任意のページにアクセスする際、
http://honyarara.local:8888
のように、ポート番号をURLの後ろにつけないといけないのです。
これがちょっと個人的にはあまり好きではなかったので、なんとかならんものかねぇ~と思っていたところ、
ホスト側でIPを指定する方法
を発見!

docker-composeでホスト側IPを指定する方法

.envファイルの作成

docker-compose.ymlが配置してある場所に.envファイルを作成し、

IP=127.0.0.1

と書きます。
ちなみに「127.0.0.1」の箇所は必要に応じて任意のローカルIPを設定してください。

docker-compose.ymlでIPを指定

.envファイルを作成したら、docker-compose.ymlのポート設定を変更します。

ports:
      - "${IP}:80:80"

portsの設定の最初に${IP}をつけるだけです。
めちゃ簡単°˖✧◝(⁰▿⁰)◜✧˖°

ちなみにポートが被らないように、私は取引先ごとにポートの区分けをしています。
127.1.*.*はA社案件で127.2.*.*はB社案件・・・みたいな感じです。
hostsファイルを見ながらIPの被りが無いように設定すれば良いだけのでかなりサクサク開発環境を作れています(*・ω・)

docker-composeでの開発環境構築の際にポート番号でお困りの方はぜひお試しあれ♪