初期データ込みのPostgresSQLコンテナを作成する

Dockerチョットデキルようになると、初期データ込みのPostgreSQL作れないか?と考えちゃいます。

Dockerfile作成

適当なディレクトリを作り、そこにDockerfileを作成します。 内容はこんな感じです。

FROM postgres:9.6
RUN localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
COPY *.sql /docker-entrypoint-initdb.d/%   

ディレクトリに、01_createtbl.sqlを置きます。 内容はこんな感じです。

create table emp (
empid int primary key,
empname varchar(80)
);

insert into emp (empid, empname) values (1234, 'SCOTT');
insert into emp (empid, empname) values (5678, 'TIGER');

docker build

前述ディレクトリで、以下コマンド打ってビルドします。

docker build -t ex .

-tは、--tag listのこと。

これでdockerイメージが作成されます。

コンテナ作成

コンテナに割当する名前、先程のイメージ名を指定してコンテナを作成します。

docker run --name expostgres -p 5432:5432 -d ex 

あとはコンテナを起動してpgAdminか何かで初期データが入っていることを確認します。