PHPMyAdminは、MySQLおよびMariaDBデータベースの一般的な管理インターフェイスです。 Webブラウザを使用して、スキーマ、テーブル、およびデータを操作できます。
プロジェクトには、コンテナ化された環境でのデプロイを簡素化する公式のDockerイメージがあります。イメージを使用して、新しいPHPMyAdminインスタンスをすばやく実行する方法は次のとおりです。
最も簡単なインストールでは、PHPMyAdminコンテナをアクセス可能なデータベースサーバーに接続できます。
docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8080:80 phpmyadmin
このコマンドは、ポート8080でPHPMyAdminを起動します。localhost:8080
にアクセスします。 ブラウザでログイン画面を表示します。 PMA_ARBITRARY
の存在 環境変数を使用すると、サーバー接続フォームが表示されます。ログインするMySQLまたはMariaDBデータベースのホストとユーザーのクレデンシャルを指定します。
この方法を使用している場合、通常、「一部の拡張機能が無効になっています」という警告がPHPMyAdminに表示されます。これは、接続しているサーバーにphpmyadmin
というデータベースがない場合に発生します 。 PHPMyAdminは、このスキーマを使用して独自の構成データを保存します。
「データベースの作成」への警告のリンクに従って、インストールを完了します。サーバー上に新しいデータベースを作成するには、ユーザーアカウントに権限が必要です。
任意のアクセスを許可する代わりに、事前設定されたサーバー接続を使用してPHPMyAdminコンテナを起動できます。 PMA_HOST
を指定します およびPMA_PORT
PMA_ARBITRARY
の代わりに環境変数 :
docker run -d --name phpmyadmin -e PMA_HOST=mysql.example.com -e PMA_PORT=33060 -p 8080:80 phpmyadmin
PMA_PORT
オプションです。値が指定されていない場合は、MySQLのデフォルトである3306が使用されます。
これらの変数を使用してコンテナを起動すると、PHPMyAdminがmysql.example.com
を操作するように制限されます。 サーバ。ログイン画面でユーザー名とパスワードの入力を求められますが、ホスト名を指定する必要はありません。
PHPMyAdminは、複数のサーバーオプションを表示するように構成することもできます。 PMA_HOSTS
を提供します およびPMA_PORTS
この機能を有効にするための接続のコンマ区切りリストとして。
MySQLDockerコンテナの使用
もう1つの一般的な使用例は、別のDockerコンテナで実行されているMySQLまたはMariaDBサーバーに接続することです。ポート上でデータベースサーバーを公開するか、両方のコンテナーを共有Dockerネットワークに接続することができます。いずれの場合も、PMA_HOST
を使用してください およびPMA_PORT
環境変数は、PHPMyAdminにサーバーへの接続方法を指示します。
従来のDockerリンクもサポートされています:
docker run -d --name phpmyadmin --link my_mysql_container:db -p 8080:80 phpmyadmin
このコマンドを使用すると、PHPMyAdminをmy_mysql_container
に接続できます。 ネットワークリンクを手動で設定せずにコンテナ。この機能はDockerでは廃止されているため、ネットワークコマンドに切り替えることをお勧めします:
docker network create phpmyadmin docker network connect phpmyadmin mysql_container_name --ip 172.17.0.1 docker network connect phpmyadmin phpmyadmin_container_name
別の方法として、Dockerの--network
を使用して、事前構成されたネットワーク接続でPHPMyAdminを起動できます。 フラグ:
docker run -d --name phpmyadmin --network phpmyadmin -p 8080:80 phpmyadmin
これで、PHPMyAdminは共有ネットワークを介してMySQLコンテナにアクセスできるようになります。 PMA_HOST
を設定します 172.17.0.1
への環境変数 コンテナを起動するとき。
DockerComposeを使用したデプロイメントの簡素化
Docker Composeファイルを作成すると、重要な展開が簡素化されます。 docker-compose up -d
を使用して、新しいPHPMyAdminコンテナを繰り返し起動できます。 コマンド。
これがdocker-compose.yml
です 任意の接続モードのPHPMyAdminの場合:
version: "3" services: phpmyadmin: image: phpmyadmin:latest ports: - 8080:80 environment: - PMA_ARBITRARY=1 restart: unless-stopped
Docker Composeは、MySQLデータベースの新規インストールとPHPMyAdminコンテナを使用してスタックを作成するのにも役立ちます。
version: "3" service: mysql: image: mysql:latest expose: - 3306 environment: - MYSQL_ROOT_PASSWORD volumes: - mysql:/var/lib/mysql restart: unless-stopped phpmyadmin: image: phpmyadmin:latest ports: - 8080:80 environment: - PMA_HOST: mysql - PMA_PASSWORD: ${MYSQL_ROOT_PASSWORD} restart: unless-stopped volumes: - mysql
docker-compose up -d
を実行します 完全にネットワーク化されたPHPMyAdminコンテナを使用してMySQLを起動します。 PHPMyAdminのPMA_HOST
変数はmysql
に設定されています 、MySQLサービス名を参照します。 Docker Composeは、サービス名と一致するようにホスト名を自動的に設定し、PHPMyAdminが共有ネットワークを使用してMySQLに接続できるようにします。
PHPMyAdmin Dockerイメージは、Dockerボリュームを介して挿入できるユーザー提供の構成ファイルをサポートします。パスは/etc/phpmyadmin/config.user.inc.php
です。 :
docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8080:80 -v my-config-file.php:/etc/phpmyadmin/config.user.inc.php phpmyadmin
PHPMyAdminでサポートされている任意の構成変数を追加できます。
このイメージは、多くの一般的な設定の環境変数もサポートしています。これらには、MEMORY_LIMIT
が含まれます 、UPLOAD_LIMIT
およびMAX_EXECUTION_TIME
、それぞれがPHP INI値に対応しており、長時間実行されるクエリや複雑なクエリを使用している場合は調整が必要になる可能性があります。
PMA_HOST
などの機密値 、PMA_PASSWORD
、およびMYSQL_ROOT_PASSWORD
、プレーン環境変数の代わりにDockerシークレットを使用して注入できます。 _FILE
を追加します 変数の名前に変更し、実際の値を提供するコンテナ内のパスに値を設定します。
docker run -d --name phpmyadmin -e PMA_HOST_FILE=/run/secrets/pma_host -p 8080:80 phpmyadmin
PHPMyAdminは、最も人気があり、最もよく知られているMySQL管理ユーティリティの1つです。ベアメタルインストールは、システムにいくつかの依存関係を追加し、アプリのソースコードと一緒にApacheとPHPをバンドルします。
DockerにPHPMyAdminをインストールすると、いくつかのDocker CLIコマンドを使用して作成、置換、および削除できる分離された環境が提供されます。公式イメージは、他のDockerコンテナで実行されているデータベースを含め、ホストからアクセス可能な任意のMySQLサーバーに接続できます。
PHPMyAdminの実行と使用に関する詳細なガイダンスは、公式ドキュメントに記載されています。データベースを意図せずに外部からの攻撃のリスクにさらさないように、セキュリティガイドを確認することが特に重要です。外界に公開されているコンテナ内にPHPMyAdminをデプロイする場合は、Dockerセキュリティのベストプラクティスも考慮する必要があります。