我有一个以 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
。