ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Docker】pgAdmin用のDockerfileを作成してみる

 pgAdminというDBへのアクセスやちょっとした監視、SQLの実行などをGUIで行えるツールがあります(詳しくは以下の公式ページを参照してください)。

 Windowsであればインストーラを手動でインストールしてデスクトップアプリとして使用することもできますが、サーバモードとしてWebサーバのような形で使用することもできます。
 サーバモードによってDBへのSQL適応などをCUIではなくWebブラウザ上のGUIから楽に行うことができるため、AWSなどでサーバモードのpgAdminを使うことも割とあるようです。

 今回はそのpgAdminを1からインストールして設定する……のではなく、Dockerfileで使用する方法の備忘録になります(1からインストールしたりするよりもDockerfileでイメージとして起動させる方が楽なのでそうしました)。


 では、始めます。


・pgAdminのDockerfile
 ある程度まで設定されたpgAdminのイメージはDockerHubに存在しています。

 なのでこのイメージをそのまま使えばよく、あとは以下の最低限のマスタユーザの設定を行えば使えます。

# マスタユーザのメールアドレス設定(xxx@yyy.zzzの形式でないとダメな様子)
ENV PGADMIN_DEFAULT_EMAIL=hoge@hoge.com

# マスタユーザのパスワード設定
ENV PGADMIN_DEFAULT_PASSWORD=pgAdminPassword

 実際に動く形のDockerfileは以下のようになります。

・Dockerfile

# pgAdmin4公式の最新イメージを使用
FROM dpage/pgadmin4:latest

# rootユーザとして実行し諸々アップデート(任意)
USER root
RUN apk update && apk upgrade
RUN apk add musl --upgrade

# pgAdminログイン用マスタユーザ環境変数を設定(必須)
ENV PGADMIN_DEFAULT_EMAIL=hoge@hoge.com
ENV PGADMIN_DEFAULT_PASSWORD=pgAdminPassword

# pgAdminのデフォルトポート80を公開(必須)
EXPOSE 80

# コンテナ起動時にpgAdminサーバ起動コマンド実行(必須)
CMD ["/bin/sh", "-c", "python3 /pgadmin4/web/pgAdmin4.py"]

 内容としては、ログイン用マスタユーザの設定をして、pgAdminのデフォルトポートである80を公開し、サーバ起動用のPythonを実行しているだけです。
「rootユーザとして実行し諸々アップデート(任意)」の部分を入れているのは、AWSのECRにイメージをプッシュした際のスキャンで引っかかる恐れがあるため、アップデートしています。

 あとはこのDockerfileをビルドしてコンテナとして立ち上げ、作業用PCからポートフォワーディング設定をしてWebブラウザからアクセスすれば、ログイン画面が表示されるはずです。


 以上がpgAdmin用のDockerfileを作成してみた内容になります。


 これを実際に使ってAWS上にこのコンテナを立ち上げたりする記事は、また後で書くかもしれません。


・参考資料