クラウド環境が PaaS オンリーで、ネットワークもオンプレと繋がない場合、Docker コンテナーを VM みたいに扱って利用する場合があります。しかしながら VM だと汎用的なので、例えば PostgreSQL に接続して操作する事に限定した Docker コンテナーを用意した方がセキュアです。Docker Hub にもいくつか phpPgAdmin のコンテナーはありましたが古そうだったので、自前で phpPgAdmin の Docker コンテナーを作ってみました。
Dockerfile
FROM --platform=linux/amd64 public.ecr.aws/docker/library/php:7.2-apache
RUN apt-get update && \
apt-get install -y \
libpq-dev \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-install pgsql
RUN curl -L -o /tmp/phpPgAdmin.tar.gz "https://github.com/phppgadmin/phppgadmin/releases/download/REL_7-13-0/phpPgAdmin-7.13.0.tar.gz" && \
tar -zxvf /tmp/phpPgAdmin.tar.gz -C /var/www/html --strip-components=1 && \
rm /tmp/phpPgAdmin.tar.gz && \
chown -R www-data:www-data /var/www/html
RUN a2enmod rewrite
COPY config.inc.php /var/www/html/conf/config.inc.php
CMD ["apache2-foreground"]
config.inc.php
<?php
$conf['servers'][0]['desc'] = 'PostgreSQL';
$conf['servers'][0]['host'] = '192.168.10.104';
$conf['servers'][0]['port'] = 5432;
$conf['servers'][0]['sslmode'] = 'allow';
$conf['servers'][0]['defaultdb'] = 'template1';
$conf['servers'][0]['pg_dump_path'] = '/usr/bin/pg_dump';
$conf['servers'][0]['pg_dumpall_path'] = '/usr/bin/pg_dumpall';
$conf['default_lang'] = 'auto';
$conf['autocomplete'] = 'default on';
$conf['extra_login_security'] = false;
$conf['owned_only'] = false;
$conf['show_comments'] = true;
$conf['show_advanced'] = false;
$conf['show_system'] = false;
$conf['min_password_length'] = 1;
$conf['left_width'] = 200;
$conf['theme'] = 'default';
$conf['show_oids'] = false;
$conf['max_rows'] = 30;
$conf['max_chars'] = 50;
$conf['use_xhtml_strict'] = false;
$conf['help_base'] = 'http://www.postgresql.org/docs/%s/interactive/';
$conf['ajax_refresh'] = 3;
$conf['plugins'] = array();
$conf['version'] = 19;
?>
ローカルで動作検証
docker run -d --rm \
--name postgres \
-p 5432:5432 \
-e POSTGRES_PASSWORD=postgres \
public.ecr.aws/docker/library/postgres:14
docker build -t phppgadmin .
docker run -d --rm \
--name phppgadmin \
-p 80:80 \
phppgadmin
ログイン直後の画面

参考
https://github.com/phppgadmin/phppgadmin
https://github.com/phppgadmin/phppgadmin/blob/master/conf/config.inc.php-dist
タグ: Docker, phpPgAdmin, PostgreSQL