Docker を使用した Laravel アプリケーションのデプロイ例

Docker を使用した Laravel アプリケーションのデプロイ例
  • この記事で使用されているPHPベースイメージはphp:7.3-apacheです。
  • この記事の Laravel バージョンは、laravel:5.8.* です。
  • 次の記事ではキューとタスクスケジューリングについて書きます。

1. Laravelアプリケーションを準備する

# mix コマンドを実行して、js、css、img ファイルをパッケージ化します。mix を使用しない場合は、npm install をスキップできます。
npm で本番環境を実行
# composer.lock に依存関係をインストールします。composer install --ignore-platform-reqs --optimize-autoloader --no-dev

2. Apache設定ファイルdocker/000-default.confを準備する

<仮想ホスト *:80>
 # ServerNameディレクティブは、リクエストスキーム、ホスト名、ポートを設定します。
 # サーバーが自身を識別するために使用します。これは作成時に使用されます
 # リダイレクトURL。仮想ホストのコンテキストでは、ServerName
 # リクエストのHost:ヘッダーにどのホスト名が表示されるかを指定します
 # この仮想ホストに一致します。デフォルトの仮想ホスト(このファイル)の場合、この
 # 値は、最後の手段としてホストとして使用されるので、決定的ではありません。
 # ただし、それ以降の仮想ホストに対しては明示的に設定する必要があります。
 #サーバー名 www.example.com

 サーバー管理者 [email protected]
 ドキュメントルート /var/www/html/public

 # 利用可能なログレベル: trace8、...、trace1、debug、info、notice、warn、
 # エラー、クリティカル、アラート、緊急。
 # 特定のログレベルを設定することもできます
 # モジュール、例:
 #ログレベル情報 ssl:warn

 エラーログ ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log を組み合わせたもの

 # conf-available/のほとんどの設定ファイルは、
 # グローバルレベルで有効または無効にするには、
 # 特定の仮想ホストのみの行を含めます。たとえば、
 # 次の行は、このホストのみのCGI設定を有効にします
 # 「a2disconf」でグローバルに無効にされた後。
 #conf-available/serve-cgi-bin.conf を含める
</仮想ホスト>

3. Dockerfileを準備する

php:7.3-apache より

ラベルメンテナー="[email protected]"

# タイムゾーンを設定 ARG TZ=Asia/Shanghai
ENV TZ ${TZ}
実行 ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# ソフトウェア cron をインストールする
実行set -eux \
 && apt-get アップデート \
 && apt-get install -y --no-install-recommends cron \
 && apt-get 自動削除 \
 && apt-get autoclean \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
 
# 拡張機能をインストールする ENV PHP_EXTENSION \
 pdo_mysql \
 数学
ENV PECL_EXTENSION \
 レディス
docker-php-ext-install $PHP_EXTENSION を実行します。
 && pecl インストール $PECL_EXTENSION \
 && docker-php-ext-enable $PECL_EXTENSION \
    opcache \
 && a2enmod の書き換え
 
# アクセスポート EXPOSE 80

ARG APP_ENV=開発
ENV APP_ENV ${APP_ENV}

コピー --chown=www-data:www-data . /var/www/html
docker/000-default.conf を /etc/apache2/sites-available/000-default.conf にコピーします。
ワークディレクトリ /var/www/html

4. Dockerignore ファイルを準備する: .dockerignore (オプション)

/ノードモジュール
ドッカー
/Dockerファイル

5. イメージエントリファイルを準備する: docker-entrypoint.sh (オプション)

このファイルには実行権限が必要ですが、このエントリ ファイルは必須ではありません。これは、アプリケーションの実行前にいくつかのキャッシュ コマンドを実行するためのものです。詳細については、ここをクリックしてください。

#!/usr/bin/env バッシュ

php アーティザン キャッシュ:クリア
php artisan config:キャッシュ
php 職人ルート:キャッシュ
php 職人ビュー:キャッシュ

apache2-フォアグラウンド

6. イメージを実行する

docker run -p 80:80 を実行します。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • dockerでlaravel開発環境をインストールする方法の詳細な説明
  • Dockerを使用してローカルLaravel環境を構築する詳細なチュートリアル
  • Docker Compose を使用して Laravel アプリケーションをオーケストレーションする方法
  • Dockerを使用してLaravelおよびVueプロジェクトの開発環境を構築する詳細な説明
  • Docker はキューとタスクのスケジューリングを実現するために Laravel アプリケーションをデプロイします
  • Dockerを使用してLaravel開発環境を構築するための完全な手順

<<:  MySQL 5.7.23 winx64 のインストールと設定方法のグラフィックチュートリアル (win10 の場合)

>>:  Vueプロジェクトでスケルトンスクリーンを使用する方法

推薦する

Docker で Jenkins サービスを構築する例

画像をプルする root@EricZhou-MateBookProX: docker pull je...

MySQLデータベースインデックスの詳細な説明

目次1. MySQLインデックスの紹介2. MySQLの5種類のインデックスの詳しい説明1. 総合索...

...

Linux の chown コマンドと chmod コマンドの違いの詳細な説明

Linux システムでは、chmod コマンドと chown コマンドの両方を使用して権限を設定でき...

Linux で Ceph 分散ソフトウェアをインストールして使用する方法に関するチュートリアル

目次序文1. 基本環境1. サービス配信2. ネットワーク構成(全ノード) 3. SSHパスワードフ...

docker-compose を使用して Apollo カスタム環境をデプロイする詳細なチュートリアル

目次アポロ コンフィギュレーション センターとは何ですか?アポロの特徴クライアントアーキテクチャアー...

LeetCode の SQL 実装 (182. 重複するメールボックス)

[LeetCode] 182.重複メールPerson という名前のテーブル内のすべての重複メールを...

vue-cli4.5.xはプロジェクトを素早く構築します

1. vue-cliをインストールする vue.js で vue.js を実行します。 2. プロジ...

Nginx は動的と静的の分離を実装します 例の説明

ウェブサイトの解析を高速化するために、動的ページと静的ページを異なるサーバーで解析して、解析速度を向...

MySQL で explain ステートメントを使用する基本的なチュートリアル

目次1. 概要1. 説明文テスト2. 結果の各列の説明2. ID列の説明1. 環境整備2. expl...

Ubuntu 上の Apache で SSL (https 証明書) を設定する正しい方法の詳細な説明

まず、Alibaba Cloud の公式チュートリアルをご覧ください。ファイルの説明: 1. 証明書...

Web デザイン: Web ミュージックの実装テクニック

<br />Web ページに音楽を挿入する場合、サフィックスに応じて異なるコードを記述す...

JS を使用した簡単な雪効果の例の詳細な説明

目次序文主な実装コードHTMLコードJSコード序文南の友達の多くは、雪をほとんど見たことがない、ある...

ServerManager の起動時にデータベースに接続できないエラーを解決する方法

Servermanager 起動時の接続データベース エラーmgrstart.batを実行しますエラ...