Yii と Docker
開発および配備の際に Yii アプリケーションを Docker コンテナとして実行することが出来ます。コンテナは隔絶された軽量の仮想マシンのようなもので、そのサービスをホストのポートにマップします。例えば、コンテナ内の 80 番ポートにあるウェブ・サーバが(ローカル)ホストの 8888 番で利用できます。
コンテナによって、開発用コンピュータと実運用サーバでソフトウェアのバージョンを全く同一にすること、迅速な配備、開発時におけるマルチ・サーバ・アーキテクチャのシミュレーションなど、数多くの問題を解決することが出来ます。
Docker コンテナの詳細については、docker.com を参照して下さい。
dockerdocker-compose
ダウンロード・ページ で Docker のツールを取得して下さい。
インストール
Section titled “インストール”インストール後、docker ps を実行すると、以下と同様の出力が得られるはずです。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTSこれは Docker デーモンが起動して走っていることを意味します。
さらに、docker-compose version を実行すると、出力は次のようになるはずです。
docker-compose version 1.20.0, build unknowndocker-py version: 3.1.3CPython version: 3.6.4OpenSSL version: OpenSSL 1.1.0g 2 Nov 2017Compose を使って、データベースやキャッシュなど、アプリケーションに必要な全てのサービスを設定して管理することが出来ます。
- Yii のための PHP ベースのイメージが yii2-docker にあります
- yii2-app-basic のための Docker サポート
- yii2-app-advanced のための Docker サポートは開発中です
Docker の基本的なコマンド:
docker-compose up -dスタックにある全てのサービスをバックグラウンドで実行
docker-compose ps実行中のサービスをリストアップ
docker-compose logs -f全てのサービスのログを連続的に表示
docker-compose stopスタックにある全てのサービスを穏やかに停止
docker-compose killスタックにある全てのサービスを即座に停止
docker-compose down -v全てのサービスを停止して削除、ホスト・ボリュームを使っていない場合のデータ損失に注意
コンテナの中でのコマンドの実行:
docker-compose run --rm php composer install新しいコンテナの中で composer install を実行
docker-compose exec php bash実行中の php サービスの中で bash を実行
高度なトピック
Section titled “高度なトピック”Yii フレームワークのテスト
Section titled “Yii フレームワークのテスト”ここ で説明されているように、Yii 自体に対する Docker を使ったフレームワーク・テストを実行することが出来ます。
データベース管理ツール
Section titled “データベース管理ツール”MySQL を (mysql) として実行するときは、以下のようにして phpMyAdmin コンテナをスタックに追加することが出来ます。
phpmyadmin: image: phpmyadmin/phpmyadmin ports: - '8888:80' environment: - PMA_ARBITRARY=1 - PMA_HOST=mysql depends_on: - mysql