postgres イメージから Dockerfile を作成しようとしています。リポジトリによると、/docker-entrypoint-initdb.d/ にシェル スクリプトを配置して初期化を処理する必要があります。オンラインで見つけた例に基づいて、次のスクリプトを作成しました。
#!/bin/bash
echo "******CREATING DOCKER DATABASE******"
gosu postgres postgres --single <<- EOSQL
CREATE DATABASE orpheus;
CREATE USER docker WITH ENCRYPTED PASSWORD 'pwd_docker';
GRANT ALL PRIVILEGES ON DATABASE orpheus to docker;
CREATE TABLE profiles ( \
profile_id SERIAL UNIQUE PRIMARY KEY, \
user_id integer NOT NULL UNIQUE, \
profile_photo_id integer NOT NULL UNIQUE, \
age integer \
);
CREATE TABLE hidden_user ( \
owner_id integer NOT NULL PRIMARY KEY, \
target_id integer NOT NULL \
);
EOSQL
echo ""
echo "******DOCKER DATABASE CREATED******"
そうしないと解析エラーが発生するため、バックスラッシュが必要なようです。スクリプトはエラーなしで実行され、CREATE TABLE コマンドを除くすべてのコマンドが効果を発揮したようです。
シングル ユーザー モードでテーブルの作成がサポートされていないということですか。もしそうなら、dockerfile に postgres で作成されたテーブルでイメージを設定させるより良い方法はありますか?