Docker Compose を使用して Laravel アプリケーションをオーケストレーションする
この記事では主に、Laravel アプリケーションをオーケストレーションするための Docker compose の使用法を紹介します。これには一定の参考価値があります。今、みんなに共有します。必要な友人は参考にしてください。
序文
Laravel公式 推奨開発環境はHomestead(実際にはパッケージ化されたVagrantボックス)ですが、これが割と重い気がするので、Docker composeを使って開発環境を整理してここに共有します。
環境要件
Docker と Docker compose を最初にインストールする必要があり、Docker ウェアハウス イメージを国内のものに置き換えることが最善です。通常、開発用コンピューター上で Vagrant を実行し、その上で Docker やその他のアプリケーションを実行します。
主なアイデア
Docker が公式に推奨しているのは、1 つのコンテナーで 1 つのサービスを実行することです。そのため、Compose オーケストレーションが存在し、各サービスはコンテナー相互接続テクノロジを通じて通信します。たとえば、Php サービスが接続するときなどです。 Mysql にコンテナ名として記述したホスト名を入力するだけで、内部で特定の IP に直接変換されます。コード ディレクトリはデータ ボリュームを使用してコンテナからホストにマッピングされ、構成ファイル (Nginx など) もデータ ボリュームを介してコンテナにマッピングされます。
実践
この一連のサービスをカプセル化しました。日常的に使用する場合は、複製して直接使用してください。ここでは主に実装のアイデアについて説明します。
プロジェクト アドレス: https://github.com/rootrl/php...
私のプロジェクト ディレクトリ構造:
php-environment-with-docker/
§── bin
│ ├── コンポーザー
│ っていつ── getContainerIp
│ └── php
── conf
│ §── nginx
│ │ └ ── conf.d
│ │ │ └─ nginx.conf
│ └─ redis
│ └─ redis.conf
─ docker-compose.yaml
─ ─ Dockerfile.php
─ LICENSE
─ README.MD
- bin これらはすべて、カプセル化されたコマンド ライン ツールです。 、これらも Docker コンテナ サービスですが、すべて使い捨てのサービスです。
- conf このディレクトリはアプリケーションの構成ディレクトリであり、
- docker-composer.yaml compose のオーケストレーション ファイルにマップされます。 Volume を使用するコンテナ。以下では、
- Dockerfile.php php のイメージ構築について具体的に説明します (DNS の変更や特別な拡張機能のインストールなど、いくつかのカスタマイズがあります)
- start ./start を実行してすべてのサービスを開始します。再起動後にこのコマンドを実行することもできます。
#docekr-compose.yaml
このファイルは compose のオーケストレーション ファイルです
version: '2' services: nginx: depends_on: - "php" image: "nginx" volumes: - "$PWD/conf/nginx/conf.d:/etc/nginx/conf.d" - "$PWD/www:/usr/share/nginx/html" ports: - "8888:80" networks: - oa-network container_name: "oa-nginx" command: /bin/bash -c "mkdir -p /var/www && ln -s /usr/share/nginx/html /var/www && nginx -g 'daemon off;'" php: image: "oa-php-fpm" build: context: . dockerfile: "Dockerfile.php" networks: - oa-network container_name: "oa-php-fpm" volumes: - "$PWD/www:/var/www/html" mysql: image: mysql:5.7 volumes: - "$PWD/db_data:/var/lib/mysql" environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: oa MYSQL_USER: oa MYSQL_PASSWORD: oa123 ports: - "3306:3306" networks: - oa-network container_name: "oa-mysql" redis: image: "redis" ports: - "6379:6379" networks: - oa-network volumes: - "$PWD/conf/redis/redis.conf:/usr/local/etc/redis/redis.conf" container_name: "oa-redis" networks: oa-network: driver: bridge
4 つのサービス php-fpm、nignx、mysql、redis がここで定義されています (他のサービスが必要な場合は、自分で追加してください)。次に、すべてのコンテナが簡単に通信できるようにパブリック ネットワークが定義されます。
たとえば、nginx.conf での
server { listen 80; server_name localhost; root /usr/share/nginx/html/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/public/$fastcgi_script_name; include fastcgi_params; } }
php-fpm での接続方法は、php:9000
Dockerfile.php
FROM php:7.2-fpm Run echo "nameserver 223.5.5.5" >> /etc/resolv.conf \ && echo "nameserver 223.6.6.6" >> /etc/resolve.conf \ && apt-get update \ && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-install mysqli pdo_mysql \ && pecl install swoole \ && pecl install redis \ && docker-php-ext-enable swoole redis
これです。 Php イメージをビルドし、ここで DNS サーバーを変更し、いくつかの PHP 拡張機能をインストールします。
すべてのサービスを開始するには、
Start
./start を使用します
コマンド ライン
./bin/php -v # Laravel artisan ./bin/php artisan
上記は、この内容全体ですこの記事がお役に立てば幸いです 皆様の学習が役に立ちます 関連コンテンツの詳細については、PHP 中国語 Web サイトにご注目ください。
関連する推奨事項:
以上がDocker Compose を使用して Laravel アプリケーションをオーケストレーションするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











AIは、作曲家の使用を最適化するのに役立ちます。特定の方法には次のものが含まれます。1。依存関係管理の最適化:AIは依存関係を分析し、最適なバージョンの組み合わせを推奨し、競合を減らします。 2。自動コード生成:AIは、ベストプラクティスに準拠したComposer.jsonファイルを生成します。 3.コードの品質を改善する:AIは潜在的な問題を検出し、最適化の提案を提供し、コードの品質を向上させます。これらの方法は、開発者が効率とコードの品質を向上させるのに役立つ機械学習および自然言語処理技術を通じて実装されています。

session_start()iscrucialinphpformangingusersions.1)itInitiateSanewsessionifnoneExists、2)resumesanexistingsession、および3)SetSessionCookieforcontinuityAcrossRequests、ApplicationslicationSliviseSlikeUserauthicationAnticatent。

LaravelとYiiの主な違いは、デザインの概念、機能的特性、使用シナリオです。 1.Laravelは、開発のシンプルさと喜びに焦点を当てており、迅速な開発や初心者に適したEloquentormやArtisan Toolsなどの豊富な機能を提供します。 2.YIIはパフォーマンスと効率を強調し、高負荷アプリケーションに適しており、効率的なActiverCordおよびキャッシュシステムを提供しますが、急な学習曲線があります。

DockerとKubernetesは、コンテナ化とオーケストレーションのリーダーです。 Dockerはコンテナライフサイクル管理に焦点を当てており、小規模プロジェクトに適しています。 Kubernetesはコンテナオーケストレーションが上手で、大規模な生産環境に適しています。 2つの組み合わせは、開発と展開の効率を改善できます。

MySQL関数は、データ処理と計算に使用できます。 1.基本的な使用には、文字列処理、日付計算、数学操作が含まれます。 2。高度な使用法には、複数の関数を組み合わせて複雑な操作を実装することが含まれます。 3.パフォーマンスの最適化では、Where句での機能の使用を回避し、GroupByおよび一時テーブルを使用する必要があります。

2024年の必須のLaravel拡張パッケージには、次のものが含まれます。 2。LaravelteLescope、詳細なアプリケーション監視を提供します。 3。RARAVELHORIZON、Redisキュータスクの管理。これらの拡張パックは、開発効率とアプリケーションのパフォーマンスを向上させることができます。

Cの相互コンパイルとは、1つのプラットフォーム上の別のプラットフォームで実行できる実行可能ファイルまたはライブラリをコンパイルすることを指します。 1)相互コンパイルでは、GCCやClangバリアントなどの特別なクロスコンパイラーを使用する必要があります。 2)相互コンパイル環境のセットアップでは、Dockerを使用してツールチェーンを管理して、再現性と移植性を向上させることができます。 3)クロスコンパイルの場合、-O2、-O3、または-OSなどのコード最適化オプションに注意して、パフォーマンスとファイルサイズのバランスを取ってください。

SentryとBugsnagをLaravelに統合すると、アプリケーションの安定性とパフォーマンスが向上する可能性があります。 1. Composer.jsonにSentrysdkを追加します。 2. config/app.phpにSentryサービスプロバイダーを追加します。 3。.envファイルでsentrydsnを構成します。 4. app \ exceptions \ handler.phpにセントリーエラーレポートを追加します。 5. Sentryを使用して例外をキャッチおよび報告し、追加のコンテキスト情報を追加します。 6. app \ exceptions \ handler.phpにbugsnagエラーレポートを追加します。 7. bugsnag監視を使用します
