[英]Is there a way to make localhost available from the CLI environment in a docker (for mac) container?
我有兩個 docker 容器,分別稱為 php-cli 和 nginx。 他們在我的mac上運行。 我的 docker-compose 文件看起來很像這樣:
version: "2.1"
services:
php-cli:
image: myproject/php-fpm
container_name: myproject_php-cli
user: www-data
entrypoint: bash
depends_on:
- nginx
networks:
- default
nginx:
image: nginx:1.13.5-alpine
container_name: myproject_nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./:/usr/src/app:cached
- ./.docker/nginx/app.conf:/etc/nginx/conf.d/default.conf
- ./.docker/nginx/fastcgi.conf:/etc/nginx/fastcgi.conf
networks:
- default
如果我打開瀏覽器並訪問localhost
,我會得到一個很好的文件索引。 但是當我登錄到php-cli
容器時, curl --verbose "localhost"
我得到以下信息:
* Rebuilt URL to: localhost/
* Hostname was NOT found in DNS cache
* Trying 127.0.0.1...
* connect to 127.0.0.1 port 80 failed: Connection refused
* Trying ::1...
* Immediate connect fail for ::1: Cannot assign requested address
* Failed to connect to localhost port 80: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 80: Connection refused
我發現一篇博客文章說要使用host.docker.internal
,但是雖然它在容器內有效,但在我的瀏覽器中失敗了。 由於我正在設置一個挑剔的應用程序設置文件,因此我需要能夠將應用程序指向一個基地址,該地址可以在主機(瀏覽器)和容器內部(curl)工作。 我不能使用兩個不同的地址。 我也不能使用 nginx 容器的名稱,因為它只能在我的 php-cli 容器中使用,而不能從瀏覽器中使用。
有沒有辦法讓我從我的 php-cli 容器中訪問localhost
,而無需指定我的 nginx 容器的名稱,也無需使用 host.docker.internal? 如果是這樣,我該怎么做?
===
更新:我嘗試將以下內容添加到 docker-compose.yaml: extra_hosts: - "localhost:host.docker.internal"
...但我得到了這個作為獎勵:
錯誤:無法為服務 php-cli 創建容器:添加主機中的 IP 地址無效:“host.docker.internal”
哦,好吧——值得一試。
這是我放入docker-compose.yml
文件的nginx
定義區域的內容:
nginx:
image: nginx:1.13.5-alpine
...
networks:
mynetworkname:
ipv4_address: "172.20.0.8"
...然后我修改了php-cli
容器定義,如下所示:
php-cli:
image: tcs/php-fpm:5.4-sudo
...
extra_hosts:
- "localhost:172.20.0.8"
...現在它可以工作了。 請注意,我必須在文件頂部單獨定義網絡,而不是依賴default
。 所以現在docker-compose.yml
文件的頂部看起來像:
networks:
mynetworkname:
ipam:
config:
- subnet: 172.20.0.0/24
所以,是的,這里相關的、谷歌可用的部分是ipv4_address
和extra_hosts
。
這是否涉及在我的 docker 群的設置方式中造成顯着的脆弱性? 是的。 我推薦它用於大多數用例嗎? 不,但是當其他選項失敗時,它適用於我的特定場景。 我希望它可以幫助某人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.