コンテナ化 アプリケーションとは、コンテナと呼ばれる軽量環境でアプリケーションを実行できるようにするために、アプリケーションとそのコンポーネントを適応させるプロセスを指します。このような環境は分離されて使い捨てであり、アプリケーションの開発、テスト、および本番環境へのデプロイに活用できます。
このガイドでは、Docker Composeを使用して、開発用のLaravelアプリケーションをコンテナ化します。終了すると、3つの別々のサービスコンテナで実行されるデモLaravelアプリケーションが作成されます。
アプリPHP7.4-FPMを実行するサービス;-
dbMySQL5.7を実行しているサービス; -
nginxappを使用するサービス Laravelアプリケーションを最終ユーザーに提供する前にPHPコードを解析するサービス。
合理化された開発プロセスを可能にし、アプリケーションのデバッグを容易にするために、共有ボリュームを使用してアプリケーションファイルの同期を維持します。 docker-compose execの使用方法も説明します appでComposerとArtisanを実行するコマンド コンテナ。
- sudo権限を持つ非rootユーザーとしてUbuntu22.04ローカルマシンまたは開発サーバーにアクセスします。リモートサーバーを使用している場合は、アクティブなファイアウォールをインストールすることをお勧めします。これらを設定するには、Ubuntu22.04の初期サーバー設定ガイドを参照してください。
- Ubuntu 22.04にDockerをインストールして使用する方法のステップ1と2に従って、サーバーにDockerをインストールします。
- Ubuntu22.04にDockerComposeをインストールして使用する方法のステップ1に従って、サーバーにDockerComposeをインストールします。
まず、デモLaravelアプリケーションをGithubリポジトリから取得します。 tutorial-01に関心があります このシリーズの最初のガイドで作成した基本的なLaravelアプリケーションを含むブランチ。
このチュートリアルと互換性のあるアプリケーションコードを入手するには、リリース tutorial-1.0.1をダウンロードしてください。 次のコマンドでホームディレクトリに移動します:
- cd ~
- curl -L https://github.com/do-community/travellist-laravel-demo/archive/tutorial-1.0.1.zip -o travellist.zip
unzipが必要です アプリケーションコードを解凍するコマンド。このパッケージを以前にインストールしたことがない場合は、次のコマンドを使用してインストールしてください。
- sudo apt update
- sudo apt install unzip
次に、アプリケーションのコンテンツを解凍し、解凍したディレクトリの名前を変更して、アクセスしやすくします。
- unzip travellist.zip
- mv travellist-laravel-demo-tutorial-1.0.1 travellist-demo
travellist-demoに移動します ディレクトリ:
- cd travellist-demo
次のステップでは、 .envを作成します アプリケーションをセットアップするための構成ファイル。
.envを設定する ファイル
Laravel構成ファイルはconfigというディレクトリにあります 、アプリケーションのルートディレクトリ内。さらに、 .env ファイルは、クレデンシャルやデプロイ間で異なる可能性のある情報など、環境に依存する構成をセットアップするために使用されます。このファイルはリビジョン管理に含まれていません。
警告 :環境構成ファイルには、データベースの資格情報やセキュリティキーなど、サーバーに関する機密情報が含まれています。そのため、このファイルを公開しないでください。
.envに含まれる値 ファイルは、 configにある通常の構成ファイルで設定された値よりも優先されます ディレクトリ。新しい環境にインストールするたびに、データベース接続設定、デバッグオプション、アプリケーションURLなど、アプリケーションが実行されている環境によって異なる可能性のある項目を定義するために、調整された環境ファイルが必要です。
次に、新しい .envを作成します 設定する開発環境の構成オプションをカスタマイズするためのファイル。 Laravelにはexample.envが付属しています コピーして独自のファイルを作成できるファイル:
- cp .env.example .env
nanoを使用してこのファイルを開きます または選択したテキストエディタ:
- nano .env
現在の.env travellistからのファイル デモアプリケーションには、 127.0.0.1でローカルMySQLデータベースを使用するための設定が含まれています データベースホストとして。 DB_HOSTを更新する必要があります Docker環境で作成するデータベースサービスを指すように変数を設定します。このガイドでは、データベースサービスを dbと呼びます。 。先に進み、リストされている DB_HOSTの値を置き換えます データベースサービス名:
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 確認します。
MySQLサービスとNginxサービスはどちらも、Docker Hubから取得したデフォルトのイメージに基づいていますが、アプリケーションコンテナ用のカスタムイメージを作成する必要があります。そのための新しいDockerfileを作成します。
旅行リスト 画像はphp:7.4-fpmに基づきます DockerHubからの公式PHPイメージ。その基本的なPHP-FPM環境に加えて、いくつかの追加のPHPモジュールとComposer依存関係管理ツールをインストールします。
また、新しいシステムユーザーを作成します。これはartisanを実行するために必要です およびcomposer アプリケーションの開発中のコマンド。 uid 設定により、コンテナ内のユーザーは、Dockerを実行しているホストマシンのシステムユーザーと同じuidを持つようになります。このようにして、これらのコマンドによって作成されたファイルはすべて、正しい権限でホストに複製されます。これは、ホストマシンで選択したコードエディタを使用して、コンテナ内で実行されるアプリケーションを開発できることも意味します。
次のコマンドで新しいDockerfileを作成します:
- nano Dockerfile
次の内容をDockerfileにコピーします。
DockerfileFROM 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 アプリケーションコンテナのコマンド。
Docker Composeを使用して開発環境を作成する場合、それらのサービスをセットアップまたはブートストラップするために、構成ファイルまたは初期化ファイルをサービスコンテナーと共有する必要があることがよくあります。この方法により、アプリケーションの開発中に構成ファイルを変更して環境を微調整することが容易になります。
次に、サービスコンテナの構成と初期化に使用されるファイルを含むフォルダを設定します。
Nginxを設定するために、 travellist.confを共有します アプリケーションの提供方法を構成するファイル。 docker-compose / nginxを作成します 次のフォルダ:
- mkdir -p docker-compose/nginx
travellist.confという名前の新しいファイルを開きます そのディレクトリ内:
- 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初期化ファイル用の新しいフォルダーを作成します フォルダ:
- mkdir docker-compose/mysql
新しい.sqlを開きます ファイル:
- nano docker-compose/mysql/init_db.sql
次のMySQLダンプは、LaravelonLEMPガイドで設定したデータベースに基づいています。 Placesという名前の新しいテーブルが作成されます 。次に、テーブルに一連のサンプルの場所を入力します。
次のコードをファイルに追加します:
docker-compose / mysql / db_init.sqlDROP 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を設定します。
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を作成します アプリケーションフォルダのルートにあるファイル:
- nano docker-compose.yml
典型的なdocker-compose.yml ファイルはバージョン定義で始まり、その後に servicesが続きます すべてのサービスが定義されているノード。共有ネットワークは通常、そのファイルの下部に定義されています。
開始するには、このボイラープレートコードを 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内 ファイル:
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からビルド済みのMySQL8.0イメージを使用します。 DockerComposeは自動的に.envをロードするため docker-compose.ymlと同じディレクトリにある可変ファイル ファイルの場合、Laravel .envからデータベース設定を取得できます 前の手順で作成したファイル。
サービスに次のサービス定義を含めます ノード、 appの直後 サービス:
db:
image: mysql:8.0
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の直後 サービス:
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の方法です。 ファイルは次のようになります:
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:8.0
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
完了したら、必ずファイルを保存してください。
ここでは、 docker-composeを使用します アプリケーションイメージを構築し、セットアップで指定したサービスを実行するためのコマンド。
appを作成する 次のコマンドを使用した画像:
- docker-compose build app
このコマンドは、完了するまでに数分かかる場合があります。次のような出力が表示されます:
OutputBuilding app
Sending build context to Docker daemon 377.3kB
Step 1/11 : FROM php:7.4-fpm
---> 8c08d993542f
Step 2/11 : ARG user
---> e3ce3af04d87
Step 3/11 : ARG uid
---> 30cb921ef7df
Step 4/11 : RUN apt-get update && apt-get install -y git curl libpng-dev libonig-dev libxml2-dev zip unzip
. . .
---> b6dbc7a02e95
Step 5/11 : RUN apt-get clean && rm -rf /var/lib/apt/lists/*
---> 10ef9dde45ad
. . .
Step 6/11 : RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
. . .
---> 920e4f09ec75
Step 7/11 : COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
---> dbbcd44e44af
Step 8/11 : RUN useradd -G www-data,root -u $uid -d /home/$user $user
---> db98e899a69a
Step 9/11 : RUN mkdir -p /home/$user/.composer && chown -R $user:$user /home/$user
---> 5119e26ebfea
Step 10/11 : WORKDIR /var/www
---> 699c491611c0
Step 11/11 : USER $user
---> cf250fe8f1af
Successfully built cf250fe8f1af
Successfully tagged travellist:latest
ビルドが完了したら、次のコマンドを使用して環境をバックグラウンドモードで実行できます。
- docker-compose up -d
OutputCreating travellist-db ... done
Creating travellist-app ... done
Creating travellist-nginx ... done
これにより、コンテナがバックグラウンドで実行されます。アクティブなサービスの状態に関する情報を表示するには、次を実行します。
- 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 nginx -g daemon off; Up 0.0.0.0:8000->80/tcp,:::8000->80/tcp
これで環境は稼働していますが、アプリケーションのセットアップを完了するには、まだいくつかのコマンドを実行する必要があります。 docker-compose execを使用できます ls -lなどのサービスコンテナ内のコマンドを実行するコマンド アプリケーションディレクトリ内のファイルに関する詳細情報を表示するには:
- docker-compose exec app ls -l
Outputtotal 256
-rw-r--r-- 1 sammy sammy 737 Apr 18 14:21 Dockerfile
-rw-r--r-- 1 sammy sammy 101 Jan 7 2020 README.md
drwxr-xr-x 6 sammy sammy 4096 Jan 7 2020 app
-rwxr-xr-x 1 sammy sammy 1686 Jan 7 2020 artisan
drwxr-xr-x 3 sammy sammy 4096 Jan 7 2020 bootstrap
-rw-r--r-- 1 sammy sammy 1501 Jan 7 2020 composer.json
-rw-r--r-- 1 sammy sammy 179071 Jan 7 2020 composer.lock
drwxr-xr-x 2 sammy sammy 4096 Jan 7 2020 config
drwxr-xr-x 5 sammy sammy 4096 Jan 7 2020 database
drwxr-xr-x 4 sammy sammy 4096 Apr 18 14:22 docker-compose
-rw-r--r-- 1 sammy sammy 1017 Apr 18 14:29 docker-compose.yml
-rw-r--r-- 1 sammy sammy 1013 Jan 7 2020 package.json
-rw-r--r-- 1 sammy sammy 1405 Jan 7 2020 phpunit.xml
drwxr-xr-x 2 sammy sammy 4096 Jan 7 2020 public
-rw-r--r-- 1 sammy sammy 273 Jan 7 2020 readme.md
drwxr-xr-x 6 sammy sammy 4096 Jan 7 2020 resources
drwxr-xr-x 2 sammy sammy 4096 Jan 7 2020 routes
-rw-r--r-- 1 sammy sammy 563 Jan 7 2020 server.php
drwxr-xr-x 5 sammy sammy 4096 Jan 7 2020 storage
drwxr-xr-x 4 sammy sammy 4096 Jan 7 2020 tests
-rw-r--r-- 1 sammy sammy 538 Jan 7 2020 webpack.mix.js
composer installを実行します アプリケーションの依存関係をインストールするには:
- docker-compose exec app rm -rf vendor composer.lock
- docker-compose exec app composer install
次のような出力が表示されます:
OutputNo composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
. . .
Lock file operations: 89 installs, 0 updates, 0 removals
- Locking doctrine/inflector (2.0.4)
- Locking doctrine/instantiator (1.4.1)
- Locking doctrine/lexer (1.2.3)
- Locking dragonmantank/cron-expression (v2.3.1)
- Locking egulias/email-validator (2.1.25)
- Locking facade/flare-client-php (1.9.1)
- Locking facade/ignition (1.18.1)
- Locking facade/ignition-contracts (1.0.2)
- Locking fideloper/proxy (4.4.1)
- Locking filp/whoops (2.14.5)
. . .
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 89 installs, 0 updates, 0 removals
- Downloading doctrine/inflector (2.0.4)
- Downloading doctrine/lexer (1.2.3)
- Downloading dragonmantank/cron-expression (v2.3.1)
- Downloading symfony/polyfill-php80 (v1.25.0)
- Downloading symfony/polyfill-php72 (v1.25.0)
- Downloading symfony/polyfill-mbstring (v1.25.0)
- Downloading symfony/var-dumper (v4.4.39)
- Downloading symfony/deprecation-contracts (v2.5.1)
. . .
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コマンドラインツール。このキーは、ユーザーセッションやその他の機密データを暗号化するために使用されます:
- docker-compose exec app php artisan key:generate
OutputApplication key set successfully.
次に、ブラウザに移動して、ポート8000でサーバーのドメイン名またはIPアドレスにアクセスします。
http://server_domain_or_IP:8000
注 :このデモをローカルマシンで実行している場合は、 http:// localhost:8000を使用してください ブラウザからアプリケーションにアクセスします。
次のようなページが表示されます:
ログを使用できます サービスによって生成されたログを確認するコマンド:
- docker-compose logs nginx
Attaching to travellist-nginx
. . .
travellist-nginx | 172.24.9.1 - - [18/Apr/2022:14:49:16 +0000] "GET / HTTP/1.1" 200 627 "-" "curl/7.82.0"
travellist-nginx | 172.24.9.1 - - [18/Apr/2022:14:51:27 +0000] "GET / HTTP/1.1" 200 627 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0"
travellist-nginx | 172.24.9.1 - - [18/Apr/2022:14:51:27 +0000] "GET /favicon.ico HTTP/1.1" 200 0 "http://localhost:8000/" "Mozilla/5.0 (X11; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0"
すべてのサービスの状態を維持したままDockerCompose環境を一時停止する場合は、次を実行します。
- docker-compose pause
OutputPausing travellist-db ... done
Pausing travellist-nginx ... done
Pausing travellist-app ... done
その後、次のコマンドでサービスを再開できます:
- docker-compose unpause
OutputUnpausing travellist-app ... done
Unpausing travellist-nginx ... done
Unpausing travellist-db ... done
Docker Compose環境をシャットダウンし、そのコンテナ、ネットワーク、およびボリュームをすべて削除するには、次のコマンドを実行します。
- 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.