2017年10月8日日曜日

Raspberry Pi上のDockerでPostgreSQLがインストールされたイメージを構築する

以下のDockerfileを使用して、Raspberry Pi上のDocker CEで動作するPostgreSQLのイメージが作成できます。
作成したいデータベース、ユーザやネットワークの設定は適宜変更します。

Dockerfile
FROM resin/raspberry-pi-alpine:3.6
ENV LANG=ja_JP.utf8 \
    PGDATA=/var/lib/postgresql/data
RUN apk --no-cache add postgresql sudo \
  && mkdir -p "$PGDATA" \
  && chown -R postgres "$PGDATA" \
  && chmod 700 "$PGDATA" \
  && mkdir -p /run/postgresql \
  && chown -R postgres /run/postgresql \
  && chmod 775 /run/postgresql \
  && sudo -u postgres initdb --encoding=UTF8 --no-locale -D "$PGDATA" \
  && sudo -u postgres pg_ctl -D "$PGDATA" -o "-c listen_addresses='localhost'" -w start \
  && echo $'CREATE USER docker; \
  ALTER USER docker WITH PASSWORD '\''docker'\''; \
  CREATE DATABASE docker; \
  GRANT ALL PRIVILEGES ON DATABASE docker TO docker;' > /tmp/setupdb.sh \
  && psql --username postgres -f /tmp/setupdb.sh \
  && sudo -u postgres pg_ctl -D "$PGDATA" -m fast -w stop \
  && rm /tmp/setupdb.sh \
  && echo "listen_addresses = '*'" >> /var/lib/postgresql/data/postgresql.conf \
  && echo "port = 5432" >> /var/lib/postgresql/data/postgresql.conf \
  && echo "host    all         all         192.168.1.0/24          password" >> /var/lib/postgresql/data/pg_hba.conf
VOLUME /var/lib/postgresql/data
EXPOSE 5432
CMD ["sudo", "-u", "postgres", "postgres", "-D", "/var/lib/postgresql/data"]

○データを保持するnamed volumeを作成する
docker volume create dbdata

○イメージのビルド
docker build  -t rpi-pg .

○コンテナの実行
docker run --rm -dit -p 5432:5432 -v dbdata:/var/lib/postgresql/data rpi-pg

○named volumeの使用サイズを調べる
docker system df -v
※Local Volumes space usageセクションの後に使用サイズが表示されます

○補足
動作環境 Raspberry Pi 3 Model B / Raspbian GNU/Linux 9 (stretch) / Docker 17.05.0-ce
Dockerイメージサイズ 101MB

○関連情報
Raspberry Pi上のDockerでphpPgAdminのイメージを構築する
Raspbian GNU/Linux 9 (stretch)上にDocker CEをインストールする

0 件のコメント:

コメントを投稿