gpt4 book ai didi

postgresql - 扩展 docker postgres 图像以创建额外的数据库

转载 作者:IT王子 更新时间:2023-10-29 00:43:39 35 4
gpt4 key购买 nike

我已经看过这个主题:https://stackoverflow.com/a/26599273/2323245

但是我有以下问题:

postgres_1  | FATAL:  role "docker" does not exist
app_1 | Error: Could not establish a connection with the database

这是我的 docker-compose.yml 文件

version: "2"

services:
app:
build:
context: .
dockerfile: Dockerfiles/app.dockerfile
links:
- postgres
depends_on:
- postgres
ports:
- "8080:8080"
environment:
PORT: 8080
networks:
- neo_dev
restart: always

postgres:
build:
context: .
dockerfile: Dockerfiles/postgres.dockerfile
networks:
- neo_dev
volumes:
- postgresql:/var/lib/postgresql
# This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52
- postgresql_data:/var/lib/postgresql/data
ports:
- "5430:5432" #in case you already have postgres running in your host machine

networks:
neo_dev:
driver: bridge

volumes:
postgresql:
postgresql_data:

我的postgres.docker文件是

FROM library/postgres

MAINTAINER Samir Bouaked "sbouaked@neocasesoftware.com"

ADD Dockerfiles/init.sql /docker-entrypoint-initdb.d/

这是我的 init.sql 文件

CREATE USER docker with password 'docker';
CREATE DATABASE docker;
GRANT ALL PRIVILEGES ON DATABASE docker TO docker;

在我的 golang 应用程序中,我正在尝试访问数据库

router.GET("/db", func(c *gin.Context) {
db, err := sql.Open("postgres", "host=postgres port=5432 user=docker dbname=docker password=docker sslmode=disable")
if err != nil {
log.Fatal("Error: The data source arguments are not valid - " + err.Error())
}
err = db.Ping()

if err != nil {
log.Println("Error: Could not establish a connection with the database")
c.String(http.StatusOK, "hotstName : %s\nDbStatus : %s", os.Getenv("HOSTNAME"), err)
} else {
c.String(http.StatusOK, "\nhotstName : %s\nDbStatus : connection ok !\n", os.Getenv("HOSTNAME"))
}
defer db.Close()
})

我尝试了不同的解决方案,比如直接传入 dockerfile env 变量

ENV POSTGRES_USER docker
ENV POSTGRES_PASSWORD docker
ENV POSTGRES_DB docker

但总是有相同的结果...有关更多信息,您可以查看此 repo https://github.com/neocase/docker-go-starter-kit

我不明白这个问题

最佳答案

是docker volume的问题。

我必须 docker volume rm postgresvolume 并再次执行 docker-compose up --build

不是环境变量的问题,而是init.sql是cash的,一开始没有运行。这是由于一些测试我做了一个项目的开始

关于postgresql - 扩展 docker postgres 图像以创建额外的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40717975/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com