我正在尝试使用gorm连接到由以下docker配置创建的数据库:
services:
app:
build:
context: .
# Correct the path to your Dockerfile
dockerfile: Dockerfile
ports:
- "127.0.0.1:8080:8080"
volumes:
- .:/app
networks:
- backend
depends_on:
- db
db:
container_name: simple_api_db_user
restart: always
image: postgres:latest
environment:
POSTGRES_USER: mateen
POSTGRES_PASSWORD: password
POSTGRES_DB: simple_api_db_user
volumes:
- db_data:/var/lib/postgresql/data
networks:
- backend
ports:
- "127.0.0.1:5430:5430"
volumes:
db_data:
networks:
backend:
driver: bridge
下面是我在golang中的postgres连接代码:
func NewPostgresConnection() (*gorm.DB, error) {
psqlConfig, err := dbConfigs.NewPostgresqlConfig()
if err != nil {
return nil, err
}
db, err := sql.Open("postgres", psqlConfig.Dsn())
if err != nil {
log.Println("DB Connection error : ", err.Error())
return nil, err
}
if err := db.Ping(); err != nil {
log.Println("DB Ping error: ", err.Error())
return nil, err
}
gdb, err := gorm.Open(postgres.Open(psqlConfig.Dsn()), &gorm.Config{})
if err != nil {
return nil, err
}
err = Migrate(gdb)
if err != nil {
return nil, err
}
return gdb, nil
}
这是我打印出来的配置DSN:&{host=simple_api_db_user user=mateen password=password dbname=simple_api_db_user port=5430 sslmode=disable TimeZone=UTC}
我在运行应用程序时收到以下错误:
simple-api-user-app-1 | 2023/05/10 14:05:16 DB Ping error: dial tcp 172.31.0.2:5430: connect: connection refused
simple-api-user-app-1 | 2023/05/10 14:05:16 dial tcp 172.31.0.2:5430: connect: connection refused
这是我的Dockerfile,尽管我认为它可能无关紧要:
# Builder
FROM golang:latest
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
RUN go install github.com/cosmtrek/air@latest
COPY . .
CMD [ "air" ]
EXPOSE 8080
**PS:**在dbeaver中尝试连接postgres端口到5430时,出现以下错误:
The connection attempt failed.
EOFException
java.io.EOFException
编辑:改变
1条答案
按热度按时间hc8w905p1#
postgres容器正在侦听5432。因此
ports
选项应设置为5430:5432
。这将主机上的端口5430
Map到docker容器上的5432
。