Docker で Adminer を使ってデータベースを管理

はじめに

前回の「Docker で Apache 2 + PHP 7.4 + PostgreSQL 12 環境を構築する方法」では、Docker 公式イメージを使った PHP + PostgreSQL 環境の構築方法をご紹介しました。

ところで PHP で動く PostgreSQL の管理ツールとして phpPgAdmin が有名ですが、執筆時点では最終リリースが2019年12月で、また Docker 公式イメージは見当たりませんでした。

同様の機能を持つツールを探す中で Adminer を知り、Docker Hub で検索したところ公式イメージもみつかりました。

そこで今日は Docker compose を用いて Adminer の公式イメージでコンテナを作る方法 をご紹介します。

Docker
19.03.1
Docker Compose
1.24.1
Adminer
4.7.7
PostgreSQL
12.3

Adminer コンテナの作り方

Adminer コンテナは docker-compose.yml を下記のように書くことで使うことができます。

/docker-compose.yml
version: "3"

services:
  myapp-adminer:
    container_name: myapp-adminer
    image: adminer:4.7-standalone
    environment:
      # ホストの初期値
      ADMINER_DEFAULT_SERVER: myapp-db
      # デザイン
      ADMINER_DESIGN: ng9
    # 8080 ポートに割り当て
    ports:
      - "8080:8080"

  myapp-db:
    container_name: myapp-db
    image: postgres:12-alpine
    environment:
      POSTGRES_DB: sampledb
      POSTGRES_USER: sample-user
      POSTGRES_PASSWORD: hi2mi4i6

そして下記コマンドでビルドしてください。

$ docker-compose up -d

Adminer の URL は、ポートを 8080 に割り当てているので、
http://localhost:8080 や http://192.168.99.100:8080 などになります。
(Docker の設定により異なります)

サンプルのように PostgreSQL などをお使いの場合は、ログイン時に「データベース種類」の変更を忘れないようにご注意ください。
(デフォルトでは MySQL になっていて、そのままだと Connection refused のエラーになります)

Adminer の image には大きく分けて standalonefastcgi の2種類があり、「latest」や「4.7」のようにそれらの記述がないものは standalone のようです。
(今回は分かりやすさの点から 4.7 ではなく 4.7-standalone を使っています)

基本的には standalone の方を使い、もし別の FastCGI サーバで Adminer を動かしたい場合は fastcgi がいいみたいです。

environment の ADMINER_DEFAULT_SERVER でデータベースのコンテナを指定します。
ユーザー情報やデータベース名を指定するパラーメータは無いみたいです。

ADMINER_DESIGN で指定しているのはデザイン(テーマ)で、下記 Adminer 公式サイトで紹介されています。

日本語表示だと見にくくなるものがありました。

また、今回は使っていませんが ADMINER_PLUGINS の指定でプラグインが使えるそうです。詳しくは下記 Docker Hub の Adminer のページをご確認ください。