この記事では、Dockerfileの作成、画像構築、コンテナランタイムをカバーするPHP 7でDockerを使用して説明しています。セキュリティのベストプラクティス(非ルートユーザー、依存関係の更新、入力検証)、Docker Compを使用したマルチサービス管理の詳細
PHP 7でDockerを使用するには、PHPアプリケーションが実行するために必要なすべてを含むDocker画像を作成することを伴います:PHP自体、Webサーバー(ApacheやNginxなど)、必要な拡張機能、およびアプリケーションコードが含まれます。プロセスの内訳は次のとおりです。
1. Dockerfile
の作成:このファイルには、Docker画像を構築するための手順が含まれています。 Apacheを使用した基本的な例は次のようになるかもしれません:
<code class="dockerfile">FROM php:7.4-apache # Install necessary PHP extensions RUN docker-php-ext-install pdo_mysql # Copy your application code COPY . /var/www/html # Expose the port Apache listens on EXPOSE 80</code>
このDockerfile
、Apacheを含むベースPHP 7.4画像で始まります。次に、 pdo_mysql
拡張機能(データベースインタラクションに不可欠)をインストールし、アプリケーションコードを正しいディレクトリにコピーします。最後に、ポート80を公開し、アプリケーションをコンテナの外側からアクセスできます。
2。Docker画像を作成します: Dockerfile
を含むディレクトリに移動して実行します。
<code class="bash">docker build -t my-php-app .</code>
このコマンドは画像を構築し、 my-php-app
としてタグ付けします。
3。Dockerコンテナを実行します:構築後、コンテナを実行します。
<code class="bash">docker run -p 8080:80 -d my-php-app</code>
このコマンドは、 -d
マシンのポート8080をマッピングして、コンテナ内のポート80にポート8080をマッピングし、コンテナ内のポート8080をマッピングします。これで、 http://localhost:8080
でアプリケーションにアクセスできます。必要に応じて、 8080
お好みのポートに置き換えることを忘れないでください。特定のセットアップに基づいてこれを調整する必要があるかもしれません(例えば、Apacheの代わりにnginxを使用)。
DockerでPHP 7アプリケーションを保護するには、多層的なアプローチが必要です。
Dockerfile
は、非ルートユーザーに作成して切り替える必要があります。はい、Docker Composeは、単一のアプリケーション内で複数のサービスを管理するのに最適です。たとえば、PHPアプリケーション用の個別のコンテナ、データベース(MySQLやPostgreSQLなど)、メッセージキュー(RabbitMQなど)、Redisキャッシュがある場合があります。
docker-compose.yml
ファイルは各サービスを定義します。
<code class="yaml">version: "3.9" services: web: build: ./web ports: - "8080:80" depends_on: - db db: image: mysql:8 environment: MYSQL_ROOT_PASSWORD: my-secret-password MYSQL_DATABASE: mydatabase MYSQL_USER: myuser MYSQL_PASSWORD: mypassword</code>
この例は、 web
サービス(PHPアプリケーション)とdb
サービス(MySQL)を示しています。 depends_on
ディレクティブは、Webアプリケーションの前にデータベースが起動することを保証します。各サービスごとにDockerfile
を個別に使用できます。 Docker Composeは、これらの相互接続されたサービスの管理を簡素化し、それらが開始され、停止され、一緒にスケーリングされるようにします。
DockerでのPHP 7アプリケーションのトラブルシューティングには、多くの場合、いくつかの領域をチェックすることが含まれます。
docker logs <container_id></container_id>
を使用して、ログを表示します。docker ps
使用してコンテナが実行されているかどうかを確認し、 docker inspect <container_id></container_id>
コンテナの状態と構成に関するより詳細な情報を取得します。Dockerfile
必要な拡張機能を正しくインストールし、正しい作業ディレクトリを設定し、必要なすべてのファイルをコピーするようにします。docker network inspect bridge
(またはネットワークの名前)を使用して、接続性を確認します。Dockerfile
に変更を加えた場合、画像を再構築してそれらの変更を反映します。より詳細なトラブルシューティング情報については、公式のDockerおよびPHPドキュメントを参照してください。これらのステップを特定のセットアップとエラーメッセージに合わせて調整すると、問題を効率的に解決できます。
以上がPHP 7でDockerを使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。