我想添加一个数据库,表并使用某种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/
答案 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。