使用初始脚本创建dockerized Postgresql

时间:2020-10-19 17:31:27

标签: postgresql docker

我有一个yml文件

  2 volumes:¬                                                                                                                                                                                                                      
  6     quartz-pg-master_data:¬                                                                                             
  7 ¬                                                                                                                       
  8 networks:¬                                                                                                              
  9     hostnet:¬                                                                                                           
 10         external: true¬                                                                                                 
 11         name: host¬

 21 configs:¬                                                                                                                                                                        
 24     quartz-create_quartz_tables-20201019-1.sh:¬                                                                         
 25         file: ./config/quartz/create.sql¬ 

 15     quartz-pg-master:¬                                                                                                  
 14         image: postgres¬                                                                                                
 13         networks:¬                                                                                                      
 12             - internal¬                                                                                                 
 11         ports:¬                                                                                                         
 10             - published: 5432¬                                                                                          
  9               target: 5432¬                                                                                             
  8               mode: host¬                                                                                               
  7         environment:¬                                                                                                   
  6             PGDATA: /pg_data¬                                                                                           
  5             POSTGRES_DB: "quartz"
                POSTGRES_USER: "quartz"
                POSTGRES_PASSWORD: "password"¬                                                                                      
  4         configs:¬                                                                                                       
  3             - source: quartz-create_quartz_tables-20201019-1.sh¬                                                        
  2               target: /docker-entrypoint-initdb.d/create.sql¬                                                           
  1         volumes:¬                                                                                                       
  0             - quartz-pg-master_data:/pg_data¬ 

具有create.sql:

CREATE TABLE qrtz_service_job_details
  (
    SCHED_NAME VARCHAR(120) NOT NULL,
    JOB_NAME  VARCHAR(200) NOT NULL,
    JOB_GROUP VARCHAR(200) NOT NULL,
    DESCRIPTION VARCHAR(250) NULL,
    JOB_CLASS_NAME   VARCHAR(250) NOT NULL, 
    IS_DURABLE BOOL NOT NULL,
    IS_NONCONCURRENT BOOL NOT NULL,
    IS_UPDATE_DATA BOOL NOT NULL,
    REQUESTS_RECOVERY BOOL NOT NULL,
    JOB_DATA BYTEA NULL,
    PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
);

CREATE TABLE qrtz_service_triggers
  (
    SCHED_NAME VARCHAR(120) NOT NULL,
    TRIGGER_NAME VARCHAR(200) NOT NULL,
    TRIGGER_GROUP VARCHAR(200) NOT NULL,
    JOB_NAME  VARCHAR(200) NOT NULL, 
    JOB_GROUP VARCHAR(200) NOT NULL,
    DESCRIPTION VARCHAR(250) NULL,
    NEXT_FIRE_TIME BIGINT NULL,
    PREV_FIRE_TIME BIGINT NULL,
    PRIORITY INTEGER NULL,
    TRIGGER_STATE VARCHAR(16) NOT NULL,
    TRIGGER_TYPE VARCHAR(8) NOT NULL,
    START_TIME BIGINT NOT NULL,
    END_TIME BIGINT NULL,
    CALENDAR_NAME VARCHAR(200) NULL,
    MISFIRE_INSTR SMALLINT NULL,
    JOB_DATA BYTEA NULL,
    PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
    FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) 
    REFERENCES qrtz_service_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) 
);

...


对于石英init.db。

我已成功使用日志初始化了postresql:

enter image description here

我跑步时

docker exec -ti bash,然后

苏石英

我的结果是:

root @ 3fac28fb199d:/#苏石英 su:用户石英不存在。

但是,我尝试使用postgres-> su postgres

我可以成功进入,但是之后我运行psql时会出现此错误

postgres@3fac28fb199d:/$ psql
psql: error: could not connect to server: FATAL:  role "postgres" does not exist

似乎根本没有创建我的数据库和用户。可能是什么问题?

1 个答案:

答案 0 :(得分:0)

在docker bash容器中,我需要使用

psql dbname用户名,因此在我看来,它可以工作并创建了我的表。

psql石英石英