首页 > 解决方案 > 如何手动联网 docker 容器

问题描述

我有两个码头集装箱:

运行以下:

docker run -p 80:80 a609c83f4cc3

成功启动容器,但无法访问 PostgreSQL 服务器。

12:16:06.192 [error] Postgrex.Protocol (#PID<0.2150.0>) failed to connect: ** (DBConnection.ConnectionError) tcp connect (localhost:5432): connection refused - :econnrefused

有没有办法通过docker run手动将运行的容器联网,以便它能够连接到 PostgreSQL 服务器?

docker-compose.yml文件:

version: "3.8"
services:
  db:
    image: postgres
    ports:
      - 5432:5432
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: database
    restart: always

标签: docker

解决方案


Compose 将自行创建一个名为default. 与其他 Docker 对象一样,它以 Compose “项目名称”为前缀,通常是当前目录名称。如果您运行docker network ls,您应该会看到一个名为something_default.

获得该网络名称后,您可以将其提供给docker run

docker run --net something_default -p 80:80 a609c83f4cc3

您还必须配置您的应用程序以连接到数据库容器;它不会打开localhost。独立容器应该仍然能够使用 Compose 提供的名称,例如,它可以使用 Compose 服务名称db作为具有标准 PostgreSQL 端口 5432 的主机名(ports:如果存在则被忽略)。


推荐阅读