首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用坞-组合连接到PostgreSQL?

如何使用坞-组合连接到PostgreSQL?
EN

Stack Overflow用户
提问于 2018-06-22 07:50:12
回答 1查看 42.4K关注 0票数 18

希望使用docker-compose一起运行api应用程序和postgresql数据库。

docker-compose文件:

代码语言:javascript
复制
version: '3'

volumes:
  database_data:
    driver: local

services:
  db:
    image: postgres:latest
    volumes:
      - database_data:/var/lib/postgresql/data

  api:
    build: ./api
    expose:
      - 8080
    ports:
      - 8080:8080
    volumes:
      - ./api:/usr/src/app/
    links:
      - db
    environment:
      - PGHOST=db
      - PGDATABASE=postgres
      - PGUSER=postgres

Api main.go文件:

代码语言:javascript
复制
func main() {
    db, err = gorm.Open("postgres", "host=db port=5432 user=postgres dbname=postgres")
  // ...
}

当运行服务时,从日志中获得消息:

代码语言:javascript
复制
api_1     | [GIN] 2018/06/22 - 07:31:10 | 404 |      1.4404ms |      172.20.0.1 | GET      /posts
api_1     |
api_1     | (sql: database is closed)
api_1     | [2018-06-22 07:31:10]
api_1     |
api_1     | (sql: database is closed)
api_1     | [2018-06-22 07:31:10]
api_1     | [GIN] 2018/06/22 - 07:32:14 | 403 |        15.6µs |      172.20.0.1 | GET      /posts
db_1      | 2018-06-22 07:34:27.296 UTC [81] FATAL:  role "root" does not exist
db_1      | 2018-06-22 07:34:36.897 UTC [90] FATAL:  role "root" does not exist

这种方式不好吗?连接字符串中的host=db?因为db是对接者,所以编写服务名。

添加

它可以发挥作用:

https://docs.docker.com/samples/library/postgres/#-or-via-psql

EN

回答 1

Stack Overflow用户

发布于 2018-09-27 19:19:35

链接中,提供了一些没有添加的配置设置。

代码语言:javascript
复制
restart: always
environment:
  POSTGRES_PASSWORD: example

你应该试试这个

代码语言:javascript
复制
version: '3'

services:
  db:
    image: postgres:latest
    restart: always
    ports:
      - 5432:5432
    environment:
      POSTGRES_PASSWORD: 'postgres'
    volumes:
      - database_data:/var/lib/postgresql/data

  api:
    build: ./api
    expose:
      - 8080
    ports:
      - 8080:8080
    volumes:
      - ./api:/usr/src/app/
    links:
      - db
    environment:
      - PGHOST: 'db'
      - PGDATABASE: 'postgres'
      - PGUSER: 'postgres'
      - PGPASSWORD: 'postgres'


volumes:
  database_data:
    driver: local

代码语言:javascript
复制
db, err := gorm.Open("postgres", "host=db port=5432 user=postgres dbname=postgres password=postgres")
票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50983177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档