Docker for MacでNameVirtualHostを使った開発環境を楽に作る方法
Apache1台でNameVirtualHostでローカルドメインで振り分けるタイプのプロジェクトが多々ありますが、Hostファイルの書き換えに使っていたHosterがMojaveアップデート後いよいよ使えなくなりました。
目的
- /etc/hostsの書き換えはやりたくない
- できればワイルドカードで指定したい(*.testなど)
まとめ
- hostsファイル書き換えからの乗り換えであれば、ローカル用のDNSを導入する
- Webのみで良ければnginx-proxyを使う
パターン1 ローカル環境のDNSサーバーを使う
DNSサーバーをローカルに作ります。dnsmasqが軽量で入れやすいのでこちらを使います。
※ 最初.devを設定していましたが、devドメインはChrome環境でhttpsにリダイレクトする仕様になっているので、.testドメインに変更しました。
dnsmasqのインストール
brew経由でdnsmasqをインストールします。
$ brew install dnsmasq
dnsmasqの自動起動設定を行います。
$ sudo brew services start dnsmasq
*.testを -> 127.0.0.1 に向ける設定
$ echo 'address=/.test/127.0.0.1' > /usr/local/etc/dnsmasq.conf
*.testのネームサーバーをdnsmasqに指定
$ sudo mkdir -v /etc/resolver
$ echo "nameserver 127.0.0.1" | sudo tee -a /etc/resolver/test
試してみる
$ ping hogehoge.test
$ ping fugafgua.test
表示だけならばapache側のNameVirtualHostで振り分けるだけで完了します。
nginx-proxyを使う
webさえなんとかなるのであればnginx-proxyのリバースプロキシを利用するのが最も簡単です。
docker-compose経由で簡単に導入できます。
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- 80:80
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
web1:
environment:
VIRTUAL_HOST: "web1.localhost, web3,localhost"
web2:
environment:
VIRTUAL_HOST: "web2.localhost"
enviroment.VIRTUAL_HOSTで割り当てるホスト名を指定します。
複数の指定やワイルドカードの指定も可能です。
上記設定の場合は次のような設定となります。
- http://web1.localhost/ , http://web3.localhost/ -> web1
- http://web2.localhost/ -> web2
NameVirtualHostも不要となるため、webのみで良ければこちらが良いです。
pingなど、名前解決が必要となる場合はdnsmasqを利用しましょう。
$ ping web1.localhost
Author And Source
この問題について(Docker for MacでNameVirtualHostを使った開発環境を楽に作る方法), 我々は、より多くの情報をここで見つけました https://qiita.com/risuke/items/097c185a6aca7a76a18f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .