我想这个问题被问了一堆,但似乎找不到一个简明的答案...
我有以下Docker Compose:
version: "3.7"
networks:
foo-network:
driver: bridge
services:
foo-pg-db:
image: postgres:9.6.2-alpine
restart: always
volumes:
- ./bootstrap/pg:/docker-entrypoint-initdb.d/
ports:
- 5432:5432
environment:
POSTGRES_USER: admin
networks:
- foo-network
这会运行,我可以使用以下URL从我的应用程序代码连接到它:“ postgres:// admin @ foo-pg-db / foo”,但是如果我尝试从我的应用程序连接到它Mac,连接URL的“主机”部分是什么?不是本地主机吗?
对我来说,类似的事情发生在MySQL容器上,“本地主机”未被标识为docker容器地址的有效地址,并且使用“ 127.0.0.1”起作用。
127.0.0.1是Linux系统中的默认地址,请检查您的hosts文件以获取操作系统使用的确切地址
此外,您的网络与它无关,因为您直接使用ports变量:-
ports:
- 5432:5432
这实际上将您的容器端口绑定到主机帖子。
<host_port> : <container_port>