加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

docker-无法连接到postgres容器

发布时间:2020-12-16 03:25:43 所属栏目:安全 来源:网络整理
导读:我在docker-compose.yml中定义了postgres服务器: db: image: postgres:9.5 expose: - 5432 然后在另一个docker容器中,我尝试连接到该postgres容器.但是它给出了警告错误: Is the server running on host "db" (172.22.0.2) and acceptingdata-service_1 |

我在docker-compose.yml中定义了postgres服务器:

db:
    image: postgres:9.5
    expose:
        - 5432

然后在另一个docker容器中,我尝试连接到该postgres容器.但是它给出了警告错误:

Is the server running on host "db" (172.22.0.2) and accepting
data-service_1  |   TCP/IP connections on port 5432?

为什么容器无法通过提供的信息(host =“ db”和port = 5432)连接到另一个容器?

聚苯乙烯
完整的docker-compose.yml:

version: "2"
services:
    data-service:
        build: .
        depends_on:
            - db
        ports:
          - "50051:50051"
    db:
        image: postgres:9.5
        depends_on:
            - data-volume
        environment:
            - POSTGRES_USER=cobrain
            - POSTGRES_PASSWORD=a
            - POSTGRES_DB=datasets
        ports:
          - "8000:5432"
        expose:
            - 5432
        volumes_from:
            - data-volume
            # - container:postgres9.5-data
        restart: always

    data-volume:
        image: busybox
        command: echo "I'm data container"
        volumes:
            - /var/lib/postgresql/data
最佳答案
解决方案#1.相同的文件.

为了能够访问db容器,您必须在docker-compose.yml上下文中定义其他容器.启动容器时,每个容器都会将所有其他容器映射到/ etc / hosts中.

做就是了

version: '2'
services:
  web:
    image: your/image
  db:
    image: postgres:9.5

如果您不希望将其他容器放入相同的docker-compose.yml中,则还有其他解决方案:

解决方案2.知识产权

Docker是否检查<您的数据库容器的名称>并在结果列表中查找IPAddress指令.使用该IPAddress作为连接主机.

解决方案#3.网路

使您的容器加入同一网络.为此,在每个服务下,定义:

services:
  db:
    networks:
     - myNetwork

不要忘记为您启动的每个容器更改db.

在开发过程中,我通常会选择第一个解决方案.我使用apache php作为一个容器,使用pgsql作为另一个容器,每个项目都有一个单独的数据库.我不会启动多个docker-compose.yml设置,因此在这种情况下,在一个.yml配置中定义两个容器是完美的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读