簡體   English   中英

如何在 docker 中為 postgresql 設置入口點 initdb 腳本?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM