GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Ubuntu20.04でDockerComposeを使用してLaravelをインストールおよびセットアップする方法

はじめに

コンテナ化 アプリケーションとは、コンテナと呼ばれる軽量環境でアプリケーションを実行できるようにするために、アプリケーションとそのコンポーネントを適応させるプロセスを指します。このような環境は分離されて使い捨てであり、アプリケーションの開発、テスト、および本番環境へのデプロイに活用できます。

このガイドでは、Docker Composeを使用して、開発用のLaravelアプリケーションをコンテナ化します。終了すると、3つの別々のサービスコンテナで実行されるデモLaravelアプリケーションが作成されます。

  • アプリ PHP7.4-FPMを実行するサービス;
  • db MySQL5.7を実行しているサービス;
  • nginx appを使用するサービス Laravelアプリケーションを最終ユーザーに提供する前にPHPコードを解析するサービス。

合理化された開発プロセスを可能にし、アプリケーションのデバッグを容易にするために、共有ボリュームを使用してアプリケーションファイルの同期を維持します。 docker-compose execの使用方法も説明します appでComposerとArtisanを実行するコマンド コンテナ。

前提条件
  • sudo権限を持つ非rootユーザーとしてUbuntu20.04ローカルマシンまたは開発サーバーにアクセスします。リモートサーバーを使用している場合は、アクティブなファイアウォールをインストールすることをお勧めします。これらを設定するには、Ubuntu20.04の初期サーバー設定ガイドを参照してください。
  • Ubuntu 20.04にDockerをインストールして使用する方法のステップ1と2に従って、サーバーにDockerをインストールします。
  • Ubuntu20.04にDockerComposeをインストールして使用する方法のステップ1に従って、サーバーにDockerComposeをインストールします。
ステップ1—デモアプリケーションの入手

まず、デモLaravelアプリケーションをGithubリポジトリから取得します。 tutorial-01に関心があります このシリーズの最初のガイドで作成した基本的なLaravelアプリケーションを含むブランチ。

このチュートリアルと互換性のあるアプリケーションコードを入手するには、リリース tutorial-1.0.1をダウンロードしてください。 次のコマンドでホームディレクトリに移動します:

  1. cd ~
  2. curl -L https://github.com/do-community/travellist-laravel-demo/archive/tutorial-1.0.1.zip -o travellist.zip

unzipが必要です アプリケーションコードを解凍するコマンド。このパッケージを以前にインストールしたことがない場合は、次のコマンドを使用してインストールしてください。

  1. sudo apt update
  2. sudo apt install unzip

次に、アプリケーションのコンテンツを解凍し、解凍したディレクトリの名前を変更して、アクセスしやすくします。

  1. unzip travellist.zip
  2. mv travellist-laravel-demo-tutorial-1.0.1 travellist-demo

travellist-demoに移動します ディレクトリ:

  1. cd travellist-demo

次のステップでは、 .envを作成します アプリケーションをセットアップするための構成ファイル。

ステップ2—アプリケーションの .envを設定する ファイル

Laravel構成ファイルはconfigというディレクトリにあります 、アプリケーションのルートディレクトリ内。さらに、 .env ファイルは、クレデンシャルやデプロイ間で異なる可能性のある情報など、環境に依存する構成をセットアップするために使用されます。このファイルはリビジョン管理に含まれていません。

警告 :環境構成ファイルには、データベースの資格情報やセキュリティキーなど、サーバーに関する機密情報が含まれています。そのため、このファイルを公開しないでください。

.envに含まれる値 ファイルは、 configにある通常の構成ファイルで設定された値よりも優先されます ディレクトリ。新しい環境にインストールするたびに、データベース接続設定、デバッグオプション、アプリケーションURLなど、アプリケーションが実行されている環境によって異なる可能性のある項目を定義するために、調整された環境ファイルが必要です。

次に、新しい .envを作成します 設定する開発環境の構成オプションをカスタマイズするためのファイル。 Laravelにはexample.envが付属しています コピーして独自のファイルを作成できるファイル:

  1. cp .env.example .env

nanoを使用してこのファイルを開きます または選択したテキストエディタ:

  1. nano .env

現在の.env travellistからのファイル デモアプリケーションには、 127.0.0.1でローカルMySQLデータベースを使用するための設定が含まれています データベースホストとして。 DB_HOSTを更新する必要があります Docker環境で作成するデータベースサービスを指すように変数を設定します。このガイドでは、データベースサービスを dbと呼びます。 。先に進み、リストされている DB_HOSTの値を置き換えます データベースサービス名:

.env
APP_NAME=Travellist
APP_ENV=dev
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost:8000

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=travellist
DB_USERNAME=travellist_user
DB_PASSWORD=password
...

必要に応じて、データベース名、ユーザー名、およびパスワードも自由に変更してください。これらの変数は、 docker-compose.ymlを設定する後のステップで活用されます。 サービスを構成するためのファイル。

編集が終わったらファイルを保存します。 nanoを使用した場合 、 Ctrl + xを押すとそれができます 、次に Y およびEnter 確認します。

ステップ3—アプリケーションのDockerfileを設定する

MySQLサービスとNginxサービスはどちらも、Docker Hubから取得したデフォルトのイメージに基づいていますが、アプリケーションコンテナ用のカスタムイメージを作成する必要があります。そのための新しいDockerfileを作成します。

旅行リスト 画像はphp:7.4-fpmに基づきます DockerHubからの公式PHPイメージ。その基本的なPHP-FPM環境に加えて、いくつかの追加のPHPモジュールとComposer依存関係管理ツールをインストールします。

また、新しいシステムユーザーを作成します。これはartisanを実行するために必要です およびcomposer アプリケーションの開発中のコマンド。 uid 設定により、コンテナ内のユーザーは、Dockerを実行しているホストマシンのシステムユーザーと同じuidを持つようになります。このようにして、これらのコマンドによって作成されたファイルはすべて、正しい権限でホストに複製されます。これは、ホストマシンで選択したコードエディタを使用して、コンテナ内で実行されるアプリケーションを開発できることも意味します。

次のコマンドで新しいDockerfileを作成します:

  1. nano Dockerfile

次の内容をDockerfileにコピーします。

Dockerfile
FROM php:7.4-fpm

# Arguments defined in docker-compose.yml
ARG user
ARG uid

# Install system dependencies
RUN apt-get update && apt-get install -y \
    git \
    curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip \
    unzip

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd

# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Create system user to run Composer and Artisan Commands
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && \
    chown -R $user:$user /home/$user

# Set working directory
WORKDIR /var/www

USER $user

完了したら、ファイルを保存することを忘れないでください。

Dockerfileは、使用しているベースイメージを定義することから始まります: php:7.4-fpm

システムパッケージとPHP拡張機能をインストールした後、 composerをコピーしてComposerをインストールします。 最新の公式イメージから独自のアプリケーションイメージまで実行可能。

次に、新しいシステムユーザーが作成され、 userを使用して設定されます。 およびuid Dockerfileの先頭で宣言された引数。これらの値は、ビルド時にDockerComposeによって挿入されます。

最後に、デフォルトの作業ディレクトリを / var / wwwとして設定します 新しく作成したユーザーに変更します。これにより、 composer を実行しているときに、通常のユーザーとして接続し、正しいディレクトリにいることが確認されます。 およびartisan アプリケーションコンテナのコマンド。

ステップ4—Nginx構成とデータベースダンプファイルの設定

Docker Composeを使用して開発環境を作成する場合、それらのサービスをセットアップまたはブートストラップするために、構成ファイルまたは初期化ファイルをサービスコンテナーと共有する必要があることがよくあります。この方法により、アプリケーションの開発中に構成ファイルを変更して環境を微調整することが容易になります。

次に、サービスコンテナの構成と初期化に使用されるファイルを含むフォルダを設定します。

Nginxを設定するために、 travellist.confを共有します アプリケーションの提供方法を​​構成するファイル。 docker-compose / nginxを作成します 次のフォルダ:

  1. mkdir -p docker-compose/nginx

travellist.confという名前の新しいファイルを開きます そのディレクトリ内:

  1. nano docker-compose/nginx/travellist.conf

次のNginx構成をそのファイルにコピーします:

docker-compose / nginx / travellist.conf

server {
    listen 80;
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/public;
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        gzip_static on;
    }
}

このファイルは、ポート 80でリッスンするようにNginxを構成します index.phpを使用します デフォルトのインデックスページとして。ドキュメントルートを/var / www / publicに設定します 、次に、 appを使用するようにNginxを構成します ポート9000のサービス *。phpを処理する ファイル。

編集が終わったら、ファイルを保存して閉じます。

MySQLデータベースを設定するために、コンテナの初期化時にインポートされるデータベースダンプを共有します。これは、そのコンテナで使用するMySQL5.7イメージによって提供される機能です。

docker-compose内にMySQL初期化ファイル用の新しいフォルダーを作成します フォルダ:

  1. mkdir docker-compose/mysql

新しい.sqlを開きます ファイル:

  1. nano docker-compose/mysql/init_db.sql

次のMySQLダンプは、LaravelonLEMPガイドで設定したデータベースに基づいています。 Placesという名前の新しいテーブルが作成されます 。次に、テーブルに一連のサンプルの場所を入力します。

次のコードをファイルに追加します:

docker-compose / mysql / db_init.sql
DROP TABLE IF EXISTS `places`;

CREATE TABLE `places` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `visited` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `places` (name, visited) VALUES ('Berlin',0),('Budapest',0),('Cincinnati',1),('Denver',0),('Helsinki',0),('Lisbon',0),('Moscow',1),('Nairobi',0),('Oslo',1),('Rio',0),('Tokyo',0);

場所 テーブルには3つのフィールドが含まれています: id name 、および visited 訪問 フィールドは、まだ行く場所を識別するために使用されるフラグです。 。サンプルの場所を自由に変更するか、新しい場所を含めてください。完了したら、ファイルを保存して閉じます。

アプリケーションのDockerfileとサービス構成ファイルの設定が完了しました。次に、サービスの作成時にこれらのファイルを使用するようにDockerComposeを設定します。

ステップ5—DockerComposeを使用したマルチコンテナー環境の作成

Docker Composeを使用すると、Dockerで実行されているアプリケーション用のマルチコンテナー環境を作成できます。 サービス定義を使用します ネットワークとデータボリュームを共有できる複数のコンテナを使用して、完全にカスタマイズ可能な環境を構築します。これにより、アプリケーションコンポーネント間のシームレスな統合が可能になります。

サービス定義を設定するために、 docker-compose.ymlという名前の新しいファイルを作成します 。通常、このファイルはアプリケーションフォルダーのルートにあり、コンテナーの構築に使用するベースイメージや、サービスの相互作用など、コンテナー化された環境を定義します。

docker-compose.ymlで3つの異なるサービスを定義します ファイル: app db 、および nginx

app サービスはtravellistという画像を作成します 、以前に作成したDockerfileに基づいています。このサービスによって定義されたコンテナは、 php-fpmを実行します PHPコードを解析し、結果を nginxに送り返すサーバー 別のコンテナで実行されるサービス。 mysql serviceは、MySQL5.7サーバーを実行するコンテナーを定義します。私たちのサービスは、 travellistという名前のブリッジネットワークを共有します 。

アプリケーションファイルは、両方の appで同期されます およびnginx バインドマウントを介したサービス 。バインドマウントは、ホストマシンとコンテナ間のパフォーマンスの高い双方向同期を可能にするため、開発環境で役立ちます。

新しいdocker-compose.ymlを作成します アプリケーションフォルダのルートにあるファイル:

  1. nano docker-compose.yml

典型的なdocker-compose.yml ファイルはバージョン定義で始まり、その後に servicesが続きます すべてのサービスが定義されているノード。共有ネットワークは通常、そのファイルの下部に定義されています。

開始するには、このボイラープレートコードを docker-compose.ymlにコピーします ファイル:

docker-compose.yml
version: "3.7"
services:


networks:
  travellist:
    driver: bridge

次に、サービスを編集します appを含めるノード 、 db およびnginx サービス。

アプリ サービス

app サービスはtravellist-appという名前のコンテナを設定します 。 docker-compose.ymlと同じパスにあるDockerfileに基づいて新しいDockerイメージを構築します ファイル。新しい画像は、 travellistという名前でローカルに保存されます 。

アプリケーションとして提供されているドキュメントルートはnginxにありますが コンテナの場合、 app内のどこかにアプリケーションファイルが必要です コンテナもあるので、LaravelArtisanツールを使用してコマンドラインタスクを実行できます。

次のサービス定義をservicesの下にコピーします ノード、 docker-compose.yml内 ファイル:

docker-compose.yml
  app:
    build:
      args:
        user: sammy
        uid: 1000
      context: ./
      dockerfile: Dockerfile
    image: travellist
    container_name: travellist-app
    restart: unless-stopped
    working_dir: /var/www/
    volumes:
      - ./:/var/www
    networks:
      - travellist

これらの設定は次のことを行います:

  • ビルド :この構成は、DockerComposeにappのローカルイメージを構築するように指示します 指定されたパス(コンテキスト)とDockerfileを使用してサービスを実行します。引数user およびuid ビルド時にユーザー作成コマンドをカスタマイズするためにDockerfileに挿入されます。
  • 画像 :作成中のイメージに使用される名前。
  • container_name :このサービスのコンテナ名を設定します。
  • 再起動 :サービスが停止しない限り、常に再起動してください。
  • working_dir :このサービスのデフォルトディレクトリを / var / wwwとして設定します 。
  • ボリューム :現在のディレクトリのコンテンツを / var / wwwに同期する共有ボリュームを作成します コンテナ内。 nginx に存在するため、これはドキュメントルートではないことに注意してください。 コンテナ。
  • ネットワーク travellistという名前のネットワークを使用するようにこのサービスを設定します 。

db サービス

db サービスは、DockerHubからビルド済みのMySQL5.7イメージを使用します。 DockerComposeは自動的に.envをロードするため docker-compose.ymlと同じディレクトリにある可変ファイル ファイルの場合、Laravel .envからデータベース設定を取得できます 前の手順で作成したファイル。

サービスに次のサービス定義を含めます ノード、 appの直後 サービス:

docker-compose.yml
  db:
    image: mysql:5.7
    container_name: travellist-db
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_USER: ${DB_USERNAME}
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    volumes:
      - ./docker-compose/mysql:/docker-entrypoint-initdb.d
    networks:
      - travellist

これらの設定は次のことを行います:

  • 画像 :このコンテナに使用するDockerイメージを定義します。この場合、DockerHubのMySQL5.7イメージを使用しています。
  • container_name :このサービスのコンテナ名を設定します: travellist-db
  • 再起動 :明示的に停止しない限り、常にこのサービスを再起動してください。
  • 環境 :新しいコンテナで環境変数を定義します。 Laravel .envから取得した値を使用しています 提供された環境変数に基づいて新しいデータベースとユーザーを自動的に作成するMySQLサービスをセットアップするためのファイル。
  • ボリューム .sqlを共有するボリュームを作成します アプリケーションデータベースを初期化するために使用されるデータベースダンプ。 MySQLイメージは自動的に.sqlをインポートします /docker-entrypoint-initdb.dに配置されたファイル コンテナ内のディレクトリ。
  • ネットワーク travellistという名前のネットワークを使用するようにこのサービスを設定します 。

nginx サービス

nginx このサービスは、軽量LinuxディストリビューションであるAlpine上にビルド済みのNginxイメージを使用します。 travellist-nginxという名前のコンテナを作成します 、およびポートを使用します ポート8000からリダイレクトを作成するための定義 ホストシステムで80をポートします コンテナ内。

サービスに次のサービス定義を含めます ノード、 dbの直後 サービス:

docker-compose.yml
  nginx:
    image: nginx:1.17-alpine
    container_name: travellist-nginx
    restart: unless-stopped
    ports:
      - 8000:80
    volumes:
      - ./:/var/www
      - ./docker-compose/nginx:/etc/nginx/conf.d
    networks:
      - travellist

これらの設定は次のことを行います:

  • 画像 :このコンテナに使用するDockerイメージを定義します。この場合、AlpineNginx1.17画像を使用しています。
  • container_name :このサービスのコンテナ名を設定します: travellist-nginx
  • 再起動 :明示的に停止しない限り、常にこのサービスを再起動してください。
  • ポート :ポート 8000を介した外部アクセスを許可するポートリダイレクションを設定します ポート80で実行されているWebサーバーへ コンテナ内。
  • ボリューム2つを作成します 共有ボリューム。 1つ目は、現在のディレクトリのコンテンツを / var / wwwに同期します。 コンテナ内。このように、アプリケーションファイルにローカルの変更を加えると、コンテナー内のNginxによって提供されるアプリケーションにすばやく反映されます。 2番目のボリュームでは、 docker-compose / nginx / travellist.confにあるNginx構成ファイルを確認します。 、コンテナのNginx構成フォルダにコピーされます。
  • ネットワーク travellistという名前のネットワークを使用するようにこのサービスを設定します 。
終了したdocker-compose.yml ファイル

これが、完成した docker-compose.ymlの方法です。 ファイルは次のようになります:

docker-compose.yml
version: "3.7"
services:
  app:
    build:
      args:
        user: sammy
        uid: 1000
      context: ./
      dockerfile: Dockerfile
    image: travellist
    container_name: travellist-app
    restart: unless-stopped
    working_dir: /var/www/
    volumes:
      - ./:/var/www
    networks:
      - travellist

  db:
    image: mysql:5.7
    container_name: travellist-db
    restart: unless-stopped
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_USER: ${DB_USERNAME}
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    volumes:
      - ./docker-compose/mysql:/docker-entrypoint-initdb.d
    networks:
      - travellist

  nginx:
    image: nginx:alpine
    container_name: travellist-nginx
    restart: unless-stopped
    ports:
      - 8000:80
    volumes:
      - ./:/var/www
      - ./docker-compose/nginx:/etc/nginx/conf.d/
    networks:
      - travellist

networks:
  travellist:
    driver: bridge

完了したら、必ずファイルを保存してください。

ステップ6—DockerComposeを使用したアプリケーションの実行

ここでは、 docker-composeを使用します アプリケーションイメージを構築し、セットアップで指定したサービスを実行するためのコマンド。

appを作成する 次のコマンドを使用した画像:

  1. docker-compose build app

このコマンドは、完了するまでに数分かかる場合があります。次のような出力が表示されます:

OutputBuilding app
Step 1/11 : FROM php:7.4-fpm
 ---> fa37bd6db22a
Step 2/11 : ARG user
 ---> Running in f71eb33b7459
Removing intermediate container f71eb33b7459
 ---> 533c30216f34
Step 3/11 : ARG uid
 ---> Running in 60d2d2a84cda
Removing intermediate container 60d2d2a84cda
 ---> 497fbf904605
Step 4/11 : RUN apt-get update && apt-get install -y     git     curl     libpng-dev     libonig-dev     ...
Step 7/11 : COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
 ---> e499f74896e3
Step 8/11 : RUN useradd -G www-data,root -u $uid -d /home/$user $user
 ---> Running in 232ef9c7dbd1
Removing intermediate container 232ef9c7dbd1
 ---> 870fa3220ffa
Step 9/11 : RUN mkdir -p /home/$user/.composer &&     chown -R $user:$user /home/$user
 ---> Running in 7ca8c0cb7f09
Removing intermediate container 7ca8c0cb7f09
 ---> 3d2ef9519a8e
Step 10/11 : WORKDIR /var/www
 ---> Running in 4a964f91edfa
Removing intermediate container 4a964f91edfa
 ---> 00ada639da21
Step 11/11 : USER $user
 ---> Running in 9f8e874fede9
Removing intermediate container 9f8e874fede9
 ---> fe176ff4702b

Successfully built fe176ff4702b
Successfully tagged travellist:latest

ビルドが完了したら、次のコマンドを使用して環境をバックグラウンドモードで実行できます。

  1. docker-compose up -d
OutputCreating travellist-db    ... done
Creating travellist-app   ... done
Creating travellist-nginx ... done

これにより、コンテナがバックグラウンドで実行されます。アクティブなサービスの状態に関する情報を表示するには、次を実行します。

  1. docker-compose ps

次のような出力が表示されます:

Output      Name                    Command               State          Ports        
--------------------------------------------------------------------------------
travellist-app     docker-php-entrypoint php-fpm    Up      9000/tcp            
travellist-db      docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp 
travellist-nginx   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:8000->80/tcp

これで環境は稼働していますが、アプリケーションのセットアップを完了するには、まだいくつかのコマンドを実行する必要があります。 docker-compose execを使用できます ls -lなどのサービスコンテナ内のコマンドを実行するコマンド アプリケーションディレクトリ内のファイルに関する詳細情報を表示するには:

  1. docker-compose exec app ls -l
Outputtotal 260
-rw-rw-r--  1 sammy sammy    737 Jun  9 11:19 Dockerfile
-rw-rw-r--  1 sammy sammy    101 Jan  7 08:05 README.md
drwxrwxr-x  6 sammy sammy   4096 Jan  7 08:05 app
-rwxr-xr-x  1 sammy sammy   1686 Jan  7 08:05 artisan
drwxrwxr-x  3 sammy sammy   4096 Jan  7 08:05 bootstrap
-rw-rw-r--  1 sammy sammy   1501 Jan  7 08:05 composer.json
-rw-rw-r--  1 sammy sammy 179071 Jan  7 08:05 composer.lock
drwxrwxr-x  2 sammy sammy   4096 Jan  7 08:05 config
drwxrwxr-x  5 sammy sammy   4096 Jan  7 08:05 database
drwxrwxr-x  4 sammy sammy   4096 Jun  9 11:19 docker-compose
-rw-rw-r--  1 sammy sammy    965 Jun  9 11:27 docker-compose.yml
-rw-rw-r--  1 sammy sammy   1013 Jan  7 08:05 package.json
-rw-rw-r--  1 sammy sammy   1405 Jan  7 08:05 phpunit.xml
drwxrwxr-x  2 sammy sammy   4096 Jan  7 08:05 public
-rw-rw-r--  1 sammy sammy    273 Jan  7 08:05 readme.md
drwxrwxr-x  6 sammy sammy   4096 Jan  7 08:05 resources
drwxrwxr-x  2 sammy sammy   4096 Jan  7 08:05 routes
-rw-rw-r--  1 sammy sammy    563 Jan  7 08:05 server.php
drwxrwxr-x  5 sammy sammy   4096 Jan  7 08:05 storage
drwxrwxr-x  4 sammy sammy   4096 Jan  7 08:05 tests
drwxrwxr-x 41 sammy sammy   4096 Jun  9 11:32 vendor
-rw-rw-r--  1 sammy sammy    538 Jan  7 08:05 webpack.mix.js

composer installを実行します アプリケーションの依存関係をインストールするには:

  1. docker-compose exec app composer install

次のような出力が表示されます:

OutputLoading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 85 installs, 0 updates, 0 removals
  - Installing doctrine/inflector (1.3.1): Downloading (100%)         
  - Installing doctrine/lexer (1.2.0): Downloading (100%)         
  - Installing dragonmantank/cron-expression (v2.3.0): Downloading (100%)         
  - Installing erusev/parsedown (1.7.4): Downloading (100%)         
  - Installing symfony/polyfill-ctype (v1.13.1): Downloading (100%)         
  - Installing phpoption/phpoption (1.7.2): Downloading (100%)         
  - Installing vlucas/phpdotenv (v3.6.0): Downloading (100%)         
  - Installing symfony/css-selector (v5.0.2): Downloading (100%)             
…
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.

アプリケーションをテストする前に最後に行う必要があるのは、 artisanを使用して一意のアプリケーションキーを生成することです。 Laravelコマンドラインツール。このキーは、ユーザーセッションやその他の機密データを暗号化するために使用されます:

  1. docker-compose exec app php artisan key:generate
OutputApplication key set successfully.

次に、ブラウザに移動して、ポート8000​​でサーバーのドメイン名またはIPアドレスにアクセスします。

http://server_domain_or_IP:8000

:このデモをローカルマシンで実行している場合は、 http:// localhost:8000を使用してください ブラウザからアプリケーションにアクセスします。

次のようなページが表示されます:

ログを使用できます サービスによって生成されたログを確認するコマンド:

  1. docker-compose logs nginx
Attaching to travellist-nginx
…
travellist-nginx | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
travellist-nginx | /docker-entrypoint.sh: Configuration complete; ready for start up
travellist-nginx | 192.168.0.1 - - [09/Jun/2020:11:46:34 +0000] "GET / HTTP/1.1" 200 627 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"
travellist-nginx | 192.168.0.1 - - [09/Jun/2020:11:46:35 +0000] "GET / HTTP/1.1" 200 627 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"

すべてのサービスの状態を維持したままDockerCompose環境を一時停止する場合は、次を実行します。

  1. docker-compose pause
OutputPausing travellist-db    ... done
Pausing travellist-nginx ... done
Pausing travellist-app   ... done

その後、次のコマンドでサービスを再開できます:

  1. docker-compose unpause
OutputUnpausing travellist-app   ... done
Unpausing travellist-nginx ... done
Unpausing travellist-db    ... done

Docker Compose環境をシャットダウンし、そのコンテナ、ネットワーク、およびボリュームをすべて削除するには、次のコマンドを実行します。

  1. docker-compose down
OutputStopping travellist-nginx ... done
Stopping travellist-db    ... done
Stopping travellist-app   ... done
Removing travellist-nginx ... done
Removing travellist-db    ... done
Removing travellist-app   ... done
Removing network travellist-laravel-demo_travellist

すべてのDockerComposeコマンドの概要については、DockerComposeコマンドラインリファレンスを確認してください。

結論

In this guide, we’ve set up a Docker environment with three containers using Docker Compose to define our infrastructure in a YAML file.

From this point on, you can work on your Laravel application without needing to install and set up a local web server for development and testing. Moreover, you’ll be working with a disposable environment that can be easily replicated and distributed, which can be helpful while developing your application and also when moving towards a production environment.


Docker
  1. Ubuntu20.04にDockerをインストールして使用する方法

  2. CentOSにDockerComposeをインストールして使用する方法

  3. UbuntuでDockerをインストールしてDockerコンテナを実行する方法

  1. Ubuntu18.04にDockerComposeをインストールする方法

  2. Ubuntu20.04にDockerComposeをインストールする方法

  3. Ubuntu18.04にDockerComposeをインストールする方法

  1. Ubuntu18.04にDockerComposeをインストールして使用する方法

  2. Ubuntu18.04にDockerをインストールしてセットアップする方法

  3. UbuntuでDockerを使用してONLYOFFICE8.9.0をインストールする方法