![docker-compose 与在主机网络上运行的容器的链接](https://linux22.com/image/723227/docker-compose%20%E4%B8%8E%E5%9C%A8%E4%B8%BB%E6%9C%BA%E7%BD%91%E7%BB%9C%E4%B8%8A%E8%BF%90%E8%A1%8C%E7%9A%84%E5%AE%B9%E5%99%A8%E7%9A%84%E9%93%BE%E6%8E%A5.png)
我有一个以 network_mode 运行的 postgres 容器host
和一个在默认(桥接)网络上运行且端口为 的 Nextcloud 容器8080:80
。
我该如何链接容器以便 Nextcloud 可以访问 postgres?我尝试将其添加到我的docker-compose.yml
,但似乎不起作用。
services:
nextcloud:
external_links:
- "postgres:postgres"
我用来运行 postgres 的命令:
docker run --name postgres --net host --restart always postgres
当我这样做时,它给了我这个错误
尝试创建管理员用户时出错:无法连接到数据库:驱动程序中发生异常:SQLSTATE[08006] [7] 无法将主机名“postgres”转换为地址:名称或服务未知
备选方案: 我如何定义我希望 nextcloud 监听的端口,以便可以在主机网络上使用它?
答案1
不建议使用 来运行容器--net host
。你可以毫不费力地将 postgres 包含在你的 docker-compose 中:
services:
postgres:
image: postgres
restart: always
volumes:
- db:/var/lib/postgresql/data
app:
image: nextcloud
ports:
- 8080:80
links:
- db
volumes:
- nextcloud:/var/www/html
restart: always
将自动创建一个网络,以便您现在就可以连接到 上的数据库postgres
。