ホームページ >バックエンド開発 >PHPチュートリアル >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
このファイルは 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
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 を使用します
./bin/php -v # Laravel artisan ./bin/php artisan
上記は、この内容全体ですこの記事がお役に立てば幸いです 皆様の学習が役に立ちます 関連コンテンツの詳細については、PHP 中国語 Web サイトにご注目ください。
関連する推奨事項:
以上がDocker Compose を使用して Laravel アプリケーションをオーケストレーションするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。