docker-compose 与在主机网络上运行的容器的链接

docker-compose 与在主机网络上运行的容器的链接

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

相关内容