Docker-compose не хочет собирать контейнер из-за ошибки
У меня выдаёт ошибку при подключении к БД
failed to initialize database, got error failed to connect to `host=localhost user=ilya database=gin_web`: dial error (dial tcp [::1]:5432: connect: cannot assign requested address)
Помогите её решить пж, нигде не нашёл ответ, пыталься менять DB_HOST с localhost на db ничего не работало, я понять не могу как эту ошибку решить.
Вот весь мой код
.env
PORT=3000
DB_HOST=localhost
DB_PORT=5432
DB_USER=ilya
DB_PASSWORD=newpass
DB_NAME=gin_web
dockerfile
FROM golang:latest
WORKDIR /usr/src/app
RUN go install github.com/cosmtrek/air@latest
COPY . .
RUN go mod tidy
docker-compose.yml
version: '3.8'
services:
go-app:
build: .
env_file:
- .env
ports:
- "3000:3000"
volumes:
- .:/usr/src/app
command: air ./cmd/main.go -b 0.0.0.0
db:
image: postgres:alpine
environment:
- POSTGRES_HOST=${DB_HOST}
- POSTGRES_PORT=${DB_PORT}
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_NAME}
ports:
- "5432:5432"
volumes:
- postgres-db:/var/lib/postgresql/data
volumes:
postgres-db:
database.go
package database
import (
"fmt"
"log"
"os"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
var DB *gorm.DB
func DBConnection() {
var err error
host := os.Getenv("DB_HOST")
port := os.Getenv("DB_PORT")
user := os.Getenv("DB_USER")
password := os.Getenv("DB_PASSWORD")
dbname := os.Getenv("DB_NAME")
dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable", host, user, password, dbname, port)
DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal("Error loading .env file")
} else {
fmt.Print("Successfully connect to database")
}
}
В main.go файле всё подключено так же как и .env файл там же подключён