postgresql - 码头工人撰写:postgres_1 | 错误:数据库未初始化且未指定超级用户密码
问题描述
我有以下docker-compose.yml
文件
version: '3'
services:
postgres:
image: 'postgres:latest'
redis:
image: 'redis:latest'
nginx:
restart: always
build:
dockerfile: Dockerfile.dev
context: ./nginx
ports:
- '3050:80'
api:
build:
dockerfile: Dockerfile.dev
context: ./server
volumes:
- /app/node_modules
- ./server:/app
environment:
- REDIS_HOST=redis
- REDIS_PORT=6379
- PGUSER=postgres
- PGHOST=postgres
- PGDATABASE=postgres
- PGPASSWORD=postgres_password
- PGPORT=5432
client:
build:
dockerfile: Dockerfile.dev
context: ./client
volumes:
- /app/node_modules
- ./client:/app
worker:
build:
dockerfile: Dockerfile.dev
context: ./worker
volumes:
- /app/node_modules
- ./worker:/app
当我运行时docker-compose up --build
,除了 postgres 之外,一切正常,它为我提供了以下错误。我已经尝试为这个问题应用接受的答案,但错误消息不会消失;不知道我在这里缺少什么。
postgres_1 | Error: Database is uninitialized and superuser password is not specified.
postgres_1 | You must specify POSTGRES_PASSWORD to a non-empty value for the
postgres_1 | superuser. For example, "-e POSTGRES_PASSWORD=password" on "docker run".
postgres_1 |
postgres_1 | You may also use "POSTGRES_HOST_AUTH_METHOD=trust" to allow all
postgres_1 | connections without a password. This is *not* recommended.
postgres_1 |
postgres_1 | See PostgreSQL documentation about "trust":
postgres_1 | https://www.postgresql.org/docs/current/auth-trust.html
我的文件夹中有这个keys
文件server
,我认为它在我所遵循的课程中用于提供文件中的environment
参数:api
docker-compose
module.exports = {
redisHost: process.env.REDIS_HOST,
redisPort: process.env.REDIS_PORT,
pgUser: process.env.PGUSER,
pgHost: process.env.PGHOST,
pgDatabase: process.env.PGDATABASE,
pgPassword: process.env.PGPASSWORD,
pgPort: process.env.PGPORT,
}
解决方案
根据文档,postgres 图像需POSTGRES_PASSWORD
要设置环境变量。
像这样的东西:
postgres:
image: 'postgres:latest'
environment:
POSTGRES_PASSWORD: example
没有更多的了。您可以尝试仅使用该代码创建一个 docker-compose.yml 并查看它是否以docker compose up
(应该)正确启动。
postgres:latest
如果仍然没有,则缓存的图像可能有问题。可能想尝试 adocker image rm postgres
然后再次调用 docker compose 命令。
警告:在执行此操作之前,请确保您的数据库中没有重要数据。
推荐阅读
- javascript - 如果使用服务工作者从缓存中显示页面,如何将类“离线”添加到正文
- java - 将 Button OnClick 与 Fragment 中 RecyclerView 内的行 OnClick 分开
- python - 如何使用合并的 bin 计算直方图?
- python - 有层次嵌套的 FOR 循环的替代品吗?
- c++ - /usr/bin/ld 找不到
仅在编译期间 - c++ - 是否可以在现代 C++ 中使用 fork?
- azure - 将 WebApp 发布到 Azure 应用服务 - 未列出资源组
- javascript - 如何在 javascript 中捕获 ERR_CERT_AUTHORITY_INVALID
- .net - 我想在 Asp .net core web api POST 方法中传递很长的字符串作为参数?
- mysql - 列没有默认值 laravel