![](/img/trans.png)
[英]Docker PostgreSQL - Scripts in /docker-entrypoint-initdb.d doesn't run
[英]How do I setup entrypoint initdb scripts for postgresql in docker?
我使用 Docker 在我的 Synology NAS 上设置了 postgresql 数据库。 容器启动,我可以使用 ssh (psql) 和 DataGrip 访问 postgresql。 但问题是我创建的初始化脚本没有按预期工作,它们没有创建任何数据库。
当我添加另一个初始化脚本但使用不同的用户时,我可以在检查角色文件夹(在 DataGrip 中)时看到添加了该角色,但我从未看到任何具有相同名称的数据库。 当使用 psql \du 时,我也看不到我在 DataGrip 中看到的初始化脚本正在创建的角色。
因此,由于正在创建用户,我假设我的配置文件夹中的初始化脚本正在运行,但是为什么在使用 psql \du 时不创建数据库而不是可见的角色?
注意:在运行 docker-compose up -d 之前,我已经对 posgres 图像进行了修剪并清空了数据文件夹,以确保没有留下给我带来问题的旧东西。
docker-compose.yml
version: '3'
services:
postgresql:
container_name: postgresql
restart: always
image: postgres:latest
network_mode: "bridge"
environment:
- TZ=Europe/Stockholm
- VERSION=latest
- POSTGRES_USER=synology
- POSTGRES_PASSWORD=synology
ports:
- "3456:5432"
volumes:
- /volume1/docker/postgresql/data:/var/lib/postgresql/data
- /volume1/docker/postgresql/config:/docker-entrypoint-initdb.d
cap_add:
- DAC_READ_SEARCH
- NET_BIND_SERVICE
- SETGID
- SETUID
- SYS_ADMIN
- SYS_PTRACE
security_opt:
- apparmor:unconfined
init.sql
CREATE USER synology with encrypted password 'synology';
CREATE DATABASE synology;
GRANT ALL PRIVILEGES ON DATABASE synology TO synology;
有人知道这里可能有什么问题吗?
更新:我开始认为,当我使用 psql 命令时,我访问的是 Synology 本地数据库,而不是我容器中的数据库……但仍然没有解释为什么只创建用户而不是我的数据库。
好的,所以我在这里有点愚蠢,我基本上是在运行 psql 命令时访问 Synology postgres DB。 我首先需要在容器docker exec -it CONTAINER_ID bash
中打开 bash ,然后运行psql -U postgres
并查看他们创建的所有用户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.