![](/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.