docker-compose.yml,postgress,如何在init.sql文件中设置数据库,表和prepop?

时间:2018-12-11 17:58:22

标签: postgresql docker-compose

我想添加一个数据库,表并使用某种init.sql文件进行预填充。不知道init.sql文件是什么样子。也不确定我将ADD命令放在哪里。

此docker-compose.yml文件有效

version: '3.6'
services:
  postgre:
    image: postgres:11.1-alpine
    ports:
      - "5432"
    environment:
      POSTGRES_USER: 'user'
      POSTGRES_PASSWORD: 'password'
      POSTGRESS_DB: 'db_amex01'
    volumes:
      - ./init:/docker-entrypoint-initdb.d/

1 个答案:

答案 0 :(得分:0)

您可以在*.sh目录中添加*.sql脚本和/或/docker-entrypoint-initdb.d/指令(基本上已经在docker-compose.yml文件中拥有了)。

用于创建用户的shell脚本示例:

#!/bin/bash
set -e

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
    CREATE USER docker;
    CREATE DATABASE docker;
    GRANT ALL PRIVILEGES ON DATABASE docker TO docker;
EOSQL

您可以通过使用.sql“转储”数据来从现有数据库生成psql -U <username> -d <dbname> -1 -f <filename>.sql文件。然后,您可以将.sql文件添加到./init/目录中。

此文档记录在https://github.com/docker-library/docs/tree/master/postgres#how-to-extend-this-image