首先有一個 nginx conf 設定檔
server {
listen 80;
listen [::]:80;
server_name dev.mydomain.com;
location / {
proxy_pass http://host.docker.internal:16686;
}
}
原本是只有給 mac 的 docker 開發使用,所以在 proxy_pass
的 hostname 設定爲 host.docker.internal
如果這個檔案是在 linux 的 docker 下執行,因爲拿不到 host.docker.internal
,會造成 nginx container 掛掉,linux 環境的使用者需要把這行改爲
proxy_pass http://172.17.0.1:16686
{{ip addr show docker0
找到 docker 使用的 host 爲 172.17.0.1
{{
如果想要同時滿足 mac / linux 使用,可以利用 docker 的 --add-host
參數:
docker --add-host=host.docker.internal:host-gateway
或是 docker-compose 的 extra_hosts
設定:
your_service:
...
extra_hosts:
- "host.docker.internal:host-gateway"
如此一來,在 mac / linux 都可以使用 host.docker.internal
與 host 連線了