Httpsを使用しないJavaScriptサービスワーカーなど、特定の機能はlocalhostでのみ機能しますが、docker-machineの上で実行されるdocker-composeを使用してdockerコンテナー内でアプリを実行する場合、次を使用して接続する必要があります私が得るアドレス
docker-machine ip default
localhost
をそのIPにマッピングする方法はありますか?
VirtualBoxポートを前方に追加して、Dockerホストのポートをローカルマシンにマッピングできます。
Dockerマシンが「デフォルト」と呼ばれ、コンテナのポート80をlocalhost:8888にマッピングすると仮定すると、実行できます:
vboxmanage modifyvm default --natpf1 "nameformapping,tcp,,8888,,80"
またはVMが実行されている場合
vboxmanage controlvm default natpf1 "nameformapping,tcp,,8888,,80"
これは、VMの設定のVirtualBox UIでも実行できます。これがVirtualBoxのドキュメントです https://www.virtualbox.org/manual/ch06.html#network_nat
また、コンテナのポートをdockerマシンのポートにマップする必要があります。コンテナを起動するときにそれを行います(これは、Dockerfileに「EXPOSE 80」コマンドがあることも前提としています)
docker run -p 80:80 mycontainer
https://docs.docker.com/engine/reference/run/
参照: https://github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md
hosts
ファイルを編集すると、ローカルマシンはドメインに指定されたIPアドレスのみを直接参照します。したがって、docker-machine
のIPアドレスをローカルマシンのetc\hosts
ファイルに追加し、コンテナのポート80
を80
のポートdocker-machine
にマップできます。
例:
1)ドッカーホストのIPアドレスを取得する
$ docker-machine ip default
192.168.99.100
2)この行をローカルマシンのetc/hosts
ファイルに追加します
192.168.99.100 domain.com
3)マシンがドメインを解決していることを確認します。
$ ping domain.com
PING domain.com (192.168.99.100): 56 data bytes
64 bytes from 192.168.99.100: icmp_seq=0 ttl=64 time=0.294 ms
64 bytes from 192.168.99.100: icmp_seq=1 ttl=64 time=0.437 ms
64 bytes from 192.168.99.100: icmp_seq=2 ttl=64 time=0.556 ms
64 bytes from 192.168.99.100: icmp_seq=3 ttl=64 time=0.270 ms
ノート:
C:\Windows\System32\Drivers\etc\hosts
にローカライズされます