如何解决Postgres Docker 容器不运行创建 SQL 脚本
docker-compose.yml
version: '3'
services:
db:
image: "postgres"
build: .
ports:
- "5432:5432"
env_file:
- database.env
Dockerfile
FROM postgres:9.3
ADD CreateDB.sql /docker-entrypoint-initdb.d/
CreateDB.sql
CREATE TABLE data_actions (
username VARCHAR NOT NULL,json_payload VARCHAR NOT NULL,cache_id VARCHAR,action_timestamp TIMESTAMP
)
database.env
DOCKER_USER=docker
DOCKER_DB=docker
DOCKER_PASSWORD=docker
这些是我用来创建这个容器的文件。我已经验证 CreateDB.sql 脚本已复制到容器中并且位于正确的位置。当我构建并运行容器并检查 pgAdmin 时,docker 数据库中没有表。我觉得我在这里遗漏了一些明显的东西?
更新 以下是启动日志 ->
LOG: database system was interrupted; last known up at 2020-12-23 18:21:18 UTC
LOG: database system was not properly shut down; automatic recovery in progress
LOG: record with zero length at 0/17A7030
LOG: redo is not required
LOG: MultiXact member wraparound protections are now enabled
LOG: autovacuum launcher started
LOG: database system is ready to accept connections
LOG: received smart shutdown request
LOG: autovacuum launcher shutting down
解决方法
问题是您错误地命名了环境变量。 postgres image 期望环境名称以 POSTGRES_
开头(因此,POSTGRES_DB
、POSTGRES_USER
等)。
在 database.env
中重命名内容后:
POSTGRES_USER=docker
POSTGRES_DB=docker
POSTGRES_PASSWORD=docker
我可以启动您的撰写堆栈,然后:
$ docker-compose exec db psql -U docker
psql (9.3.25)
Type "help" for help.
docker=# \c docker
You are now connected to database "docker" as user "docker".
docker=# \dt
List of relations
Schema | Name | Type | Owner
--------+--------------+-------+--------
public | data_actions | table | docker
(1 row)
docker=#
使用您的原始 database.env
,Postgres 会在默认的 data_actions
数据库中创建您的 postgres
表。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。