Ошибка подключения к БД Postgresql
У меня возникает ошибка в приложении запущенном через контейнер, при отправке запроса выдаёт ошибку: failed to connect to user= database=: /tmp/.s.PGSQL.5432 (/tmp): dial error: dial unix /tmp/.s.PGSQL.5432: connect: no such file or directory". Не могу понять в чём дело, кто сталкивался или знает как решить эту проблему?
Мой docker-compose.yml:
version: '3.8'
services:
postgres:
image: postgres:16
container_name: posts_and_comments_postgres
environment:
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
ports:
- ${DB_PORT}:${DB_PORT}
healthcheck:
test: ["CMD-SHELL", "pg_isready -d ${DB_NAME} -U ${DB_USER}"]
interval: 3s
timeout: 5s
retries: 5
volumes:
- ./data:/var/lib/postgresql/data
networks:
posts_net:
aliases:
- database
app:
build: ./
container_name: posts_and_comments
ports:
- ${PORT}:${PORT}
depends_on:
postgres:
condition: service_healthy
environment:
DATABASE_URL: "postgres://${DB_USER}:${DB_PASSWORD}@database:5432/${DB_NAME}?sslmode=${DB_SSLMODE}"
IN_MEMORY: "false"
networks:
- posts_net
networks:
posts_net:
Мой Dockerfile:
FROM golang:1.24-alpine AS builder
WORKDIR /app
RUN apk --no-cache add bash git make # gcc gettext musl-dev
# dependencies
COPY go.mod go.sum ./
RUN go mod download
# build
COPY . .
RUN go build -o ./bin/app cmd/main.go
# run
FROM alpine AS runner
COPY --from=builder /app/bin/app /
COPY docker.env .env
CMD ["/app"]
Пример .env и docker.env файлов:
PORT=8080
DB_USER=user
DB_PASSWORD=password
DB_PORT=5432
DB_NAME=postgres
DB_HOST=database
DB_SSLMODE=disable
DB_URL="postgres://user:password@database:5432/postgres?sslmode=disable"
IN_MEMORY=false
Ответы (1 шт):
Автор решения: Guzya
→ Ссылка
У Вас app и PG в разных контейнерах, но в строке подключения не указано ни имя контейнера PG ни IP.