ホームページ > バックエンド開発 > PHP7 > PHP 7でDockerを使用する方法は?

PHP 7でDockerを使用する方法は?

Karen Carpenter
リリース: 2025-03-10 18:26:46
オリジナル
150 人が閲覧しました

この記事では、Dockerfileの作成、画像構築、コンテナランタイムをカバーするPHP 7でDockerを使用して説明しています。セキュリティのベストプラクティス(非ルートユーザー、依存関係の更新、入力検証)、Docker Compを使用したマルチサービス管理の詳細

PHP 7でDockerを使用する方法は?

PHP 7でDockerを使用する方法は?

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アプリケーションを保護するためのベストプラクティスは何ですか?

DockerでPHP 7アプリケーションを保護するには、多層的なアプローチが必要です。

  • 非ルートユーザーを使用する:コンテナ内の非ルートユーザーとしてアプリケーションを実行すると、セキュリティ侵害による潜在的な損害が大幅に制限されます。 Dockerfileは、非ルートユーザーに作成して切り替える必要があります。
  • 依存関係を更新してください: PHP、拡張機能、その他の依存関係を定期的に更新して、既知の脆弱性をパッチします。
  • データベース接続を保護する:アプリケーションコードでハードコードデータベース資格情報を絶対にしないでください。環境変数を使用して機密情報を保存し、コンテナ内にアクセスします。
  • 入力検証と消毒:注入攻撃(SQLインジェクション、クロスサイトスクリプトなど)を防ぐために、堅牢な入力検証と消毒を実装します。
  • 定期的なセキュリティ監査:定期的なセキュリティ監査と浸透テストを実施して、脆弱性を特定して対処します。
  • HTTPSを有効にする:常にHTTPSを使用して、アプリケーションとクライアント間の通信を暗号化してください。これには、SSL/TLS証明書を使用するようにWebサーバー(ApacheまたはNginx)を構成する必要があります。
  • ネットワークアクセスを制限:コンテナに必要なポートのみを公開します。ファイアウォールを使用して、データベースやその他のサービスへのアクセスを制限します。
  • 安全なベース画像を使用します:信頼できるソースから、手入れの行き届いた安全なベース画像から始めます。
  • 脆弱性のために定期的に画像をスキャンする: ClairやTrivyなどのツールを使用して、既知の脆弱性についてDocker画像をスキャンします。

Docker Composeを使用して、単一のアプリケーション内で複数のPHP 7サービスを管理できますか?

はい、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でのPHP 7アプリケーションのトラブルシューティングには、多くの場合、いくつかの領域をチェックすることが含まれます。

  • アプリケーションログの確認:コンテナ内のログを調べて、エラーまたは警告を識別します。 docker logs <container_id></container_id>を使用して、ログを表示します。
  • コンテナのステータスを確認します。DockerPS docker ps使用してコンテナが実行されているかどうかを確認し、 docker inspect <container_id></container_id>コンテナの状態と構成に関するより詳細な情報を取得します。
  • dockerfileを調べる: Dockerfile必要な拡張機能を正しくインストールし、正しい作業ディレクトリを設定し、必要なすべてのファイルをコピーするようにします。
  • ネットワークの構成を検査します。ポートがホストとコンテナの間に正しくマッピングされていることを確認し、コンテナが他のサービス(データベースなど)に到達できることを確認します。 docker network inspect bridge (またはネットワークの名前)を使用して、接続性を確認します。
  • 環境変数を確認します。環境変数がコンテナ内で正しく設定されていることを確認してください。
  • 画像の再構築:アプリケーションコードまたはDockerfileに変更を加えた場合、画像を再構築してそれらの変更を反映します。
  • デバッガーを使用してください: Xdebugなどのデバッグツールを使用して、コードを介してエラーのソースを特定します。
  • より小さなベースイメージの使用を検討してください。過度に大きなベース画像は、ビルド時間が遅くなり、セキュリティリスクの増加につながる可能性があります。

より詳細なトラブルシューティング情報については、公式のDockerおよびPHPドキュメントを参照してください。これらのステップを特定のセットアップとエラーメッセージに合わせて調整すると、問題を効率的に解決できます。

以上がPHP 7でDockerを使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート