postgresql - 无法连接到 postgres(用户密码验证失败 - docker)

标签 postgresql docker go go-gorm

我试图运行 docker compose 来设置 nginx、golang 服务器和 postgresql。问题是我无法连接到数据库:

enter image description here

最初,我尝试使用以下指令连接到 postgres:

db, err = gorm.Open("postgres", "host=db port=5432 user=sigbrian password=example sslmode=disable")

使用这个 docker-compose 文件:

version: '3.2'

# volumes:
  # database_data:
    # driver: local

services:
  db:
    image: postgres
    restart: always
    environment:
      - POSTGRES_DB:sigdb
      - POSTGRES_USER:sigbrian
      - POSTGRES_PASSWORD:example
    ports:
      - '5432:5432'
    # volumes:
      # - database_data:/var/lib/postgresql/data
  golang-app:
    build:
      context: .
      dockerfile: Dockerfile
    # command: ["./wait-for-it.sh", "db:5432"]
    # ports:
    #   - '80:8888'
    expose:
      - '8080'
    depends_on:
      - "db"
    links:
      - "db"
  nginx-proxy-and-webserver:
    image: nginx:1.15.5-alpine
    ports:
      - '80:80'
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./static:/var/www/sig/static
    depends_on:
      - "golang-app"
    links:
      - "golang-app"

但是当我从文件中注释 postgres 用户、数据库和密码环境变量,并尝试以这种方式建立连接时:

db, err = gorm.Open("postgres", "host=db port=5432 user=postgres sslmode=disable")

仍然抛出相同的错误。感谢您的帮助。

最佳答案

我像你一样使用 docker compose 与 postgres 和 golang,这是我使用的 docker-compose.yml 文件

version: '2'
services:
  redis:
    image: redis:latest
    command: --appendonly yes

  postgres:
    image: postgres:latest
    environment:
      - POSTGRES_USER=amine
      - POSTGRES_PASSWORD=amine
      - POSTGRES_DB=0000

  app:
    image: ahilaly/amine.in:v0.1.3
    command: -wait
    ports:
      - 7000:7000

    depends_on:
      - postgres
      - redis

    links:
      - postgres:postgres
      - redis:redis

关于postgresql - 无法连接到 postgres(用户密码验证失败 - docker),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52961938/

相关文章:

docker - 在集群模式下使用docker engine 1.12.3之后,互锁或注册者仍然有用吗?

database - "No function matches the given name and argument types"用于自定义功能

django - 如何使用相应的 Django 模型为 Postgres DB 中的列添加 "description"?

docker - Docker撰写覆盖主机变量

go - bytes.Buffer 的限制?

string - "count"字符串的结果 "pattern"没有得到打印。这是代码

unit-testing - 对使用 gorilla/mux URL 参数的函数进行单元测试

sql - 我如何优化这个缓慢的 PostgreSQL 查询

postgresql - Postgres : 'role does not exist' using dblink, 但确实如此

docker - 使用 Ansible 模块删除所有图像