現在の位置: ホーム> 最新記事一覧> Yii フレームワーク アプリケーションの Docker コンテナ化デプロイメントの完全ガイド

Yii フレームワーク アプリケーションの Docker コンテナ化デプロイメントの完全ガイド

M66 2025-10-13

Docker を使用して Yii フレームワーク アプリケーションをコンテナ化してデプロイする

序文

Docker は、アプリケーションとその依存環境をまとめてパッケージ化し、さまざまな環境での迅速かつ安定したデプロイを実現できる軽量のコンテナ化プラットフォームです。この記事では、Docker コンテナ化と Yii フレームワーク アプリケーションのデプロイメントを使用して、開発プロセスと起動プロセスをより効率的かつ一貫性のあるものにする方法について説明します。

前提条件

  • Docker バージョン 19.03 以降
  • すでに構築されている Yii フレームワーク アプリケーション
  • Composer パッケージマネージャー

Dockerfileの作成

まず、プロジェクトのルート ディレクトリにDockerfileという名前の新しいファイルを作成し、次の内容を書き込みます。

 FROM php:7.4-fpm

WORKDIR /var/www

COPY composer.json .
RUN composer install

COPY . .

EXPOSE 80
CMD ["php", "-S", "0.0.0.0:80"]

このファイルは、PHP 環境の基本イメージを定義し、プロジェクトの依存関係をインストールし、コンテナーの作業ディレクトリと起動コマンドを設定します。

Dockerイメージをビルドする

ターミナルでプロジェクトのルート ディレクトリを入力し、次のコマンドを実行してイメージをビルドします。

 <span class="fun">docker build -t yii-app 。</span>

このコマンドは、Dockerfile の構成に基づいてyii-appという名前のイメージを生成します。

Dockerコンテナを実行する

イメージが構築されたら、次のコマンドを使用してコンテナーを実行できます。

 <span class="fun">docker run -p 8080:80 yii-app</span>

実行後、 http://localhost:8080にアクセスして、Yii アプリケーションが正常に起動するかどうかを確認できます。

リモートサーバーにデプロイする

アプリケーションをローカルでテストすると、リモート サーバーにデプロイできます。まず、ビルドされたイメージを Docker Hub またはプライベート イメージ ウェアハウスにプッシュし、サーバー上で次の操作を実行します。

画像をプルします:

 <span class="fun">docker pull <レジストリ>/<名前空間>/yii-app</span>

コンテナを実行します。

 <span class="fun">docker run -p 80:80 <レジストリ>/<名前空間>/yii-app</span>

意思そしてイメージ ウェアハウスのアドレスと名前空間に置き換えます。

Docker Compose を使用して複数のコンテナを管理する

Yii プロジェクトでデータベース、キャッシュ、その他のサービスが必要な場合は、Docker Compose を使用して複数のコンテナを均一に管理できます。プロジェクトのルート ディレクトリにdocker-compose.ymlファイルを作成します。例は次のとおりです。

 version: '3'

services:
  web:
    build: .
    ports:
      - "8080:80"
    volumes:
      - ./:/var/www

次に、ターミナルで次のコマンドを実行してアプリケーションを起動します。

 <span class="fun">docker-compose up -d</span>

Docker Compose は自動的にイメージを構築し、必要なコンテナを起動して、Yii アプリケーションと依存サービスを一緒に実行できるようにします。

要約する

Docker を介した Yii フレームワーク アプリケーションのコンテナ化されたデプロイメントは、環境設定を簡素化するだけでなく、開発、テスト、実稼働環境の一貫性を維持します。単一コンテナのデプロイメントであっても、複数コンテナのオーケストレーションであっても、Docker は Yii プロジェクトの継続的な統合と配信のための効率的なソリューションを提供します。