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セキュリティのベストプラクティスも考慮する必要があります。