目次
序文
環境要件
主なアイデア
実践
#docekr-compose.yaml
Dockerfile.php
すべてのサービスを開始するには、
Start
コマンド ライン
ホームページ バックエンド開発 PHPチュートリアル Docker Compose を使用して Laravel アプリケーションをオーケストレーションする

Docker Compose を使用して Laravel アプリケーションをオーケストレーションする

Jul 06, 2018 am 11:15 AM
docker docker-compose laravel php

この記事では主に、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

─ start
  • 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

作曲家:AIを介したPHP開発の援助 作曲家:AIを介したPHP開発の援助 Apr 29, 2025 am 12:27 AM

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

session_start()関数の重要性は何ですか? session_start()関数の重要性は何ですか? May 03, 2025 am 12:18 AM

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

PHPフレームワークLaravelとYiiの違いは何ですか PHPフレームワークLaravelとYiiの違いは何ですか Apr 30, 2025 pm 02:24 PM

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

Docker vs. Kubernetes:重要な違​​いと相乗効果 Docker vs. Kubernetes:重要な違​​いと相乗効果 May 01, 2025 am 12:09 AM

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

データ処理と計算にMySQL関数を使用する方法 データ処理と計算にMySQL関数を使用する方法 Apr 29, 2025 pm 04:21 PM

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

Laravelの最高の拡張パックを推奨:2024 Essential Tools Laravelの最高の拡張パックを推奨:2024 Essential Tools Apr 30, 2025 pm 02:18 PM

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

Cの相互コンパイルとは何ですか? Cの相互コンパイルとは何ですか? Apr 28, 2025 pm 08:21 PM

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

Laravelログとエラー監視:SentryとBugsnagの統合 Laravelログとエラー監視:SentryとBugsnagの統合 Apr 30, 2025 pm 02:39 PM

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監視を使用します

See all articles