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プロジェクトでスケルトンスクリーンを使用する方法

推薦する

VUE ユニアプリテンプレート構文についての簡単な説明

1.v-bind(略称:)コンポーネント プロパティのデータで定義されたデータ変数を使用するか、コン...

JavaScript による Web ページ カルーセルの超詳細な実装

目次HTML ページの作成js部分の機能を実装する1. 左ボタンと右ボタン2. 小さな円を動的に生成...

CSS の 4 つのインポート方法と優先順位の簡単な分析

第一に: CSSを導入する4つの方法CSS を導入する方法には、インライン スタイル、埋め込みスタイ...

MySql 8.0.11 のインストールと設定のチュートリアル

公式ウェブサイトアドレス: https://dev.mysql.com/downloads/mysq...

W3C チュートリアル (10): W3C XQuery アクティビティ

XQuery は、XML ドキュメントからデータを抽出するための言語です。 XQuery は、XML...

TypeScript のマップされた型とより優れたリテラル型推論について説明します。

目次概要マップされた型を使用して Object.freeze() を構築するマッピングタイプの構文は...

MySQL の完全なデータベース バックアップ データを使用して単一のテーブル データを復元する方法

序文データベースをバックアップするときは、データベース全体のバックアップを使用します。ただし、何らか...

docker インストール後に hello-world を実行する問題を解決する

yumを使用してcentos7.3にDocker V1.13.1をインストールしましたしかし、doc...

Vueアイコンセレクターのサンプルコード

出典: http://www.ruoyi.vip/ 'vue' から Vue をイン...

MySQLデータの重複チェックと重複排除の実装ステートメント

テーブル user があり、フィールドは id、nick_name、password、email、p...

IE6/7 で絶対配置された要素が不可解に消えたりブロックされたりする問題を解決する方法

1. 絶対配置レイヤーの隣接フローティング レイヤーの幅が親レイヤーの幅と等しくなく、フロートがクリ...

WeChatアプレットはシンプルな計算機を実装する

WeChatアプレットの簡単な計算機は参考用です。具体的な内容は次のとおりです。 1. はじめに1....

MySQL InnoDB テーブルスペース暗号化の例の詳細な説明

序文MySQL 5.7.11 以降、MySQL は、別の表領域に格納された InnoDB テーブルの...

Vueはページに透かし効果を追加する機能を実装します

最近、あるプロジェクトに取り組んでいたとき、ページに透かし効果を追加するように依頼されました。さっそ...