現代のソフトウェア開発の世界では、コンテナ化が効率的な導入と拡張性の基礎となっています。 Docker を使用すると、アプリケーションとその依存関係をポータブル コンテナーに簡単にパッケージ化できます。このブログでは、Docker Compose を使用してマルチコンテナーの PHP および MySQL アプリケーションを作成する手順を説明します。
一貫性: 開発と運用のすべての段階で同じ環境でアプリを実行します。
分離: PHP や MySQL などのサービスを、モジュール式で保守可能なセットアップのために別のコンテナーに保持します。
スケーリングの容易さ: アプリの成長に合わせてコンテナを簡単に追加または削除できます。
プロジェクト ディレクトリは次のようになります:
project/ │ ├── php-app/ │ ├── Dockerfile │ └── index.php │ └── docker-compose.yml
これが docker-compose.yml ファイルです:
version: '3.8' services: php-app: build: ./php-app # Builds the PHP app Docker image from the ./php-app directory ports: - "8080:80" # Maps port 8080 on the host to port 80 in the container depends_on: - mysql # Ensures MySQL starts before the PHP app mysql: image: mysql:8.0 # Uses the official MySQL image ports: - "3306:3306" # Maps port 3306 on the host to port 3306 in the container environment: MYSQL_ROOT_PASSWORD: root # Root password for MySQL MYSQL_DATABASE: mydb # Initial database to create volumes: - mysql-data:/var/lib/mysql # Persists MySQL data in a named volume volumes: mysql-data: # Declares a named volume for MySQL data persistence
index.php ファイルは MySQL コンテナに接続します。
<?php $servername = "mysql"; // Service name defined in docker-compose.yml $username = "root"; $password = "root"; $database = "mydb"; try { // Create connection $conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password); // Set PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected to MySQL successfully!"; } catch (PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?>
Dockerfile は、必要な依存関係を含む PHP コンテナを構築します。
# Use the official PHP image FROM php:8.2-apache # Install PDO MySQL extension RUN docker-php-ext-install pdo pdo_mysql # Set the working directory WORKDIR /var/www/html # Copy the application code COPY index.php . # Expose port 80 EXPOSE 80
ディレクトリ構造を作成する
コンテナのビルドと起動 プロジェクト ディレクトリでターミナルを開き、次のコマンドを実行します。
docker-compose up --build
PHP アプリケーションにアクセスする ブラウザで http://localhost:8080 にアクセスします。すべてが正しく設定されている場合は、以下が表示されるはずです。
Connected to MySQL successfully!
MySQL クライアントまたは MySQL Workbench を使用します。
を使用して localhost:3306 に接続します。
ユーザー名: root
パスワード: root
データベース mydb が作成されたことを確認します。
サービスの依存関係管理: depend_on は、PHP アプリケーションよりも前に MySQL が開始されることを保証します。
データの永続性: mysql-data ボリュームには MySQL データが保存され、コンテナーの再起動後の損失を防ぎます。
ポート マッピング: ホスト マシンにマッピングされたポートを通じてサービスに簡単にアクセスします。
Nginx や Redis などのサービスを Compose ファイルに追加します。
.env ファイルを使用して機密構成を管理します。
Docker Compose の水平スケーリング用のスケール オプションを使用してサービスをスケールします。
このセットアップでは、Docker Compose を使用してスケーラブルなモジュール式の PHP および MySQL アプリケーションを構築しました。コンテナ化により、環境管理が簡素化され、アプリをクラウド展開に向けて準備できます。初心者でも経験豊富な開発者でも、Docker は最新のアプリケーション開発に不可欠なツールです。
セットアップを次のレベルに引き上げる準備はできましたか?これを CI/CD パイプラインまたは Kubernetes と統合して運用グレードの環境を実現してみてください。
以上がPHP および MySQL アプリケーションを Docker 化する: マルチコンテナー アプリのステップバイステップ ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。