我收到来自 Docker 中的 Go 应用程序的以下错误消息:
panic: failed to connect to `host=localhost user=postgres-dev database=dev`: dial error (dial tcp [::1]:5432: connect: cannot assign requested address)
Run Code Online (Sandbox Code Playgroud)
出现在下一个Dockerfile和docker-compose.yml文件的环境中:
FROM golang:latest
WORKDIR /WD
COPY go.mod go.sum ./
RUN go mod download
COPY . .
Run Code Online (Sandbox Code Playgroud)
该docker-compose.yml文件中:
version: '3'
services:
db:
image: postgres:latest
environment:
POSTGRES_DB: dev
POSTGRES_USER: postgres-dev
POSTGRES_PASSWORD: [~secret~]
ports: 5432:5432
app:
build: .
command: ["./wait-for-it.sh", "db:5432", "--", "go", "run", "main.go"]
volumes:
- .:/WD
ports:
- "8000:8000"
depends_on:
- db …Run Code Online (Sandbox Code Playgroud) 我在 docker-compose 上使用 pg-admin 和 GO 运行 Postgres DB。
问题:我可以从pg-admin到连接Postgres。但无法从 建立连接Go。
我尝试了不同的身份验证字符串组合,但它不起作用。字符串格式与此处https://github.com/karlkeefer/pngr相同- 但容器名称不同 -database
(错误)连接 URl:
backend_1 | 2021/08/08 14:24:40 DB connection: database://main:fugZwypczB94m0LP7CcH@postgres:5432/temp_db?sslmode=disable
backend_1 | 2021/08/08 14:24:40 Unalble to open DB connection: dial tcp 127.0.0.1:5432: connect: connection refused
Run Code Online (Sandbox Code Playgroud)
(URI 生成与此处相同https://github.com/karlkeefer/pngr)
码头工人:
version: '3.8'
services:
backend:
restart: always
build:
context: backend
target: dev
volumes:
- ./backend:/root
ports:
- "5000:5000"
env_file: .env
depends_on:
- database
database:
build: database
restart: always
environment: …Run Code Online (Sandbox Code Playgroud)