2 回答
![?](http://img1.sycdn.imooc.com/5333a1a90001c8d802000200-100-100.jpg)
TA贡献1785条经验 获得超8个赞
Docker compose 执行 DNS 解析。您应该能够按名称访问数据库。
删除:
environment:
HOST: db
将后滞端口更正为 5432:
db:
...
ports:
- 5432:5432
您必须能够像这样连接:
db := pg.Connect(&pg.Options{
Addr: "db:5432",
User: "gorm",
Database: "gorm",
Password: "gorm",
})
至于环境变量,您可以像这样声明和访问它们:
backend:
environment:
POSTGRES_USER: gorm
...
os.Getenv("POSTGRES_USER")
![?](http://img1.sycdn.imooc.com/54584ed2000152a202200220-100-100.jpg)
TA贡献1834条经验 获得超8个赞
Docker 撰写将为您的容器创建一个网络,它们可以在其中相互通信和访问。
您可以通过向服务添加一个名称来对 Docker 撰写文件进行简单的更改,这将确保它们每次都获得相同的名称。
version: "3.7"
services:
backend:
image: golang:1.16
build: ./
container_name: backend
working_dir: /app
volumes:
- ./backend/:/app
command: go run main.go
ports:
- "8080:8080"
depends_on:
- db
db:
image: postgres
restart: always
container_name: db
environment:
POSTGRES_USER: gorm
POSTGRES_PASSWORD: gorm
POSTGRES_DB: gorm
ports:
- "9920:5432"
Postgres的默认端口是5432,所以我将其映射到您的9920。然后,您可以通过指定以下内容从后端容器访问数据库容器:
db:9920
- 2 回答
- 0 关注
- 92 浏览
添加回答
举报