繁体   English   中英

在docker-compose网络中访问Postgres数据

[英]Accessing postgres data in docker-compose network

我无法访问从docker-compose文件创建的数据库。

给定以下撰写文件,我应该能够使用类似以下内容的方法从Java连接到该文件:

jdbc:postgresql://eprase:eprase@database:7000/eprase

但是,连接被拒绝。 我什至不能使用PGAdmin使用相同的详细信息连接它来创建新服务器。

我已经进入数据库容器并运行psql命令,以验证是否已根据PostgreSQL文档Docker创建了eprase用户和数据库,一切似乎都很好。 我无法确定问题是否出在数据库容器内,或者我是否需要在撰写网络中进行更改。

客户端和服务器服务在很大程度上可以忽略,服务器是基于Java的Web API,客户端是Angular应用。

撰写文件:

version: "3"
services:
  client:
    image: eprase/client:latest
    build: ./client/eprase-app
    networks:
      api:
    ports:
      - "5000:80"
    tty: true
    depends_on:
      - server
  server:
    image: eprase/server:latest
    build: ./server
    networks:
      api:
    ports:
      - "6000:8080"
    depends_on:
      - database
  database:
    image: postgres:9
    volumes:
      - "./database/data:/var/lib/postgresql/data"
    environment:
      - "POSTGRES_USER=eprase"
      - "POSTGRES_PASSWORD=eprase"
      - "POSTGRES_DB=eprase"
    networks:
      api:
    ports:
      - "7000:5432"
    restart: unless-stopped
  pgadmin:
    image: dpage/pgadmin4:latest
    environment: 
      - "PGADMIN_DEFAULT_EMAIL=admin@eprase.com"
      - "PGADMIN_DEFAULT_PASSWORD=eprase"
    networks:
      api:
    ports:
      - "8000:80"
    depends_on:
      - database
networks:
  api:

PostgreSQL数据库正在容器端口5432上侦听。 7000:5432行将主机端口7000映射到容器端口5432 这样,您就可以在端口7000上连接到数据库。但是,公共网络( api )上的服务应通过容器端口相互通信。

因此,从客户机和服务器服务的容器的角度来看,连接字符串应为:

jdbc:postgresql://eprase:eprase@database:5432/eprase

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM