ホームページ  >  記事  >  バックエンド開発  >  Laravel 用の Docker 開発環境を自分で構築する方法

Laravel 用の Docker 開発環境を自分で構築する方法

不言
不言オリジナル
2018-07-23 10:13:362616ブラウズ

この記事の内容は、Laravel の Docker 開発環境の構築に関するものですが、一定の参考価値があるので、困っている友人は参考にしてください。

長い間何も書いていませんでしたが、今日はLaravelを動かすためのDocker環境の構築方法についてお話します。

市場で最も有名なものは「laradock」です https://github.com/laradock/laradock

Docker PHP 開発環境
使用方法のリファレンス: http: / /laradock.io

「自作」なので、これを参照することでLaravelの操作を最小限に抑えることができます。

以下は、私がリストした基本的な条件です:

  1. ソフトウェア: PHP 7.2、Nginx、MySQL、Composer、NPM または Yarn など;

  2. 国内ミラーリングを使用します。

  3. Docker-Compose

  4. 「laradock」と同様にスケーラビリティを実現するには、Docker-Compose オーケストレーション メソッドを使用して、複数のコア イメージをまとめます。

php-fpm

ここでは、「DaoCloud」アクセラレーション イメージ -

7.2-fpm-alpine

を使用しています。

このバージョンでは、PHP 7.2 バージョンと

alpine

最小化システムの両方が使用されています。これに基づいて、環境に必要な追加のツールをインストールできます: composernodejspythonyarn など。 <pre class="brush:php;toolbar:false">FROM daocloud.io/php:7.2-fpm-alpine MAINTAINER coding01 &lt;yemeishu@126.com&gt; RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories RUN apk add --no-cache --virtual .build-deps \         $PHPIZE_DEPS \         curl-dev \         imagemagick-dev \         libtool \         libxml2-dev \         postgresql-dev \         sqlite-dev \     &amp;&amp; apk add --no-cache \         curl \         git \         imagemagick \         mysql-client \         postgresql-libs \     &amp;&amp; pecl install imagick \     &amp;&amp; docker-php-ext-enable imagick \     &amp;&amp; docker-php-ext-install \         curl \         iconv \         mbstring \         pdo \         pdo_mysql \         pdo_pgsql \         pdo_sqlite \         pcntl \         tokenizer \         xml \         zip \     &amp;&amp; curl -s https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/ --filename=composer \     &amp;&amp; apk del -f .build-deps # 修改 composer 为国内镜像 RUN composer config -g repo.packagist composer https://packagist.laravel-china.org # install prestissimo RUN composer global require &quot;hirak/prestissimo&quot; # install laravel envoy RUN composer global require &quot;laravel/envoy&quot; #install laravel installer RUN composer global require &quot;laravel/installer&quot; RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories RUN apk update &amp;&amp; apk add -u nodejs libpng-dev python ENV PATH /root/.yarn/bin:$PATH RUN apk update \   &amp;&amp; apk add curl bash binutils tar \   &amp;&amp; rm -rf /var/cache/apk/* \   &amp;&amp; /bin/bash \   &amp;&amp; touch ~/.bashrc \   &amp;&amp; curl -o- -L https://yarnpkg.com/install.sh | bash \   &amp;&amp; yarn config set registry 'https://registry.npm.taobao.org' \   &amp;&amp; npm install -g cnpm --registry=https://registry.npm.taobao.org WORKDIR /var/www</pre>alpine システム プラグインをインストールするには、

mirrors.aliyun.com

Alibaba Cloud ミラーを使用します。 php:7.2-fpm-alpine 具体的な使用方法については、https://dashboard.daocloud.io/packages/019c8dce-ec80-4468-bddc-254fc62ef5c7## を参照してください。

#nginx

nginx

は、主に Web サイト設定ファイルを

nginx

にロードするために使用します。

FROM daocloud.io/nginx:1.13-alpine

MAINTAINER coding01 <yemeishu@126.com>

ADD vhost.conf /etc/nginx/conf.d/default.conf

WORKDIR /var/www
残りはこれらの画像を接続することです。最後に、docker-compose.yml ファイルの内容を見てみましょう:
version: '2'
services:

  # The Application
  app:
    build:
      context: ./
      dockerfile: app.dockerfile
    working_dir: /var/www
    volumes:
      - ../:/var/www
    environment:
      - "DB_PORT=3306"
      - "DB_HOST=database"
      - "REDIS_HOST=redis"
      - "REDIS_PORT=6379"

  # The Web Server
  web:
    build:
      context: ./
      dockerfile: web.dockerfile
    working_dir: /var/www
    volumes_from:
      - app
    ports:
      - 8080:80

  # The Database
  database:
    image: daocloud.io/mysql:5.7.4
    volumes:
      - dbdata:/var/lib/mysql
    environment:
      - "MYSQL_DATABASE=homestead"
      - "MYSQL_USER=homestead"
      - "MYSQL_PASSWORD=secret"
      - "MYSQL_ROOT_PASSWORD=secret"
    ports:
        - "3306:3306"

  redis:
    image: daocloud.io/library/redis:4.0.10-alpine
    command: redis-server --appendonly yes

volumes:
  dbdata:
もう一度テストしてください

Laravel プロジェクトを作成します

composer create-project laravel/laravel demo

メモ:

テストのために、

vendor

フォルダーと

composer.lock ファイルを削除できます。 git clonedemo

プロジェクトと同じフォルダー内に、

git clone

で自作した「laraveldocker」:

git clone https://github.com/fanly/laraveldocker.git
docker-compose.ymlファイルのパスを使用してプロジェクトを実行します:
app:
    build:
      context: ./
      dockerfile: app.dockerfile
    working_dir: /var/www
    volumes:
      - ../:/var/www
build

in

laraveldocker 以下でビルド コマンドを実行します。

docker-compose up

全体の速度は非常に高速です


次にコンテナに入ります

docker exec -it de075c525528 bash
プラグインをインストールした効果を見てみましょう:


使用方法

https://packagist.laravel-china.org

国内ミラー。

注: このミラーは、Laravel China コミュニティである Youpaiyun と Youfanyuanyang が共同で立ち上げた公共福祉プロジェクトであり、安定した高速な Composer 国内ミラーリング サービスを大多数の PHP ユーザーに提供することを目的としています。
使用することをお勧めします

参考: http://laravel-china.org/topics/4484/composer-mirror-use-help

USE
yarn

または

cnpm

プラグインのインストール:

Laravel キー シークレット の生成:

cp .env.example .env
php artisan key:generate

Application key [base64:4A7VK6MEX7FakPLDSLji97kz/nyWUAWhW4wYn3gefsY=] set successfully.

Run 効果を見てみましょう:

次にデータベース接続を見てみましょう。

.env を変更します:

DB_CONNECTION=mysql
DB_HOST=database
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
## を使用します。 #php artisan make: auth

を使用して、すべての認証インターフェイスのレイアウト、登録、ログイン ビューとルートを生成します。同時に、アプリケーションのログイン要求を処理するための HomeController

も生成します。データをロードするには、

php 職人移行を使用します。

データ テーブルを見てみましょう:

この時点では、接続されていることを示しています
MySQL

データベースはOKです。

概要

学習プロセスでは、他の人が作成した Dockerfile を使用するのが最善です。直接使うのであれば、自己完結できれば一番いいのですが。

独自の Docker 開発環境を構築してさらに学ぶこともできます。今後も開発ニーズに合わせて改良・最小化を続けてまいります。

関連する推奨事項:

TP5 での URL アクセス パターンの解析


Nginx設定詳細コード

以上がLaravel 用の Docker 開発環境を自分で構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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