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

推薦する

OracleデータをMySQLデータベースに抽出する実装プロセス

Oracle データベースから MySQL データベースへの移行では、Oracle データベース モ...

Kubernetesでポッドを作成する方法

目次ポッドを作成するには? kubectl ツールポッドを作成するには?前回の記事では、コンテナとポ...

CSS3でハートを描く

成果を達成する要件/機能: CSS + HTML を使用してハートを描く方法。分析:正方形と 2 つ...

HTML における iFrame タグの 2 つの使用法

最近、私は「ぶどうコレクション」というプロジェクトに取り組んでいます。簡単に言うと、Budou ペー...

1 行のコードでさまざまな IE 互換性の問題を解決します (IE6-IE10)

x-ua-compatible は、IE ブラウザがページを解析およびコンパイルするためのモデルを...

Nginx の構成と HTTP 実装コード分析との互換性

OpenSSL を使用して SSL キーと CSR ファイルを生成するHTTPS を設定するには、秘...

MySQL 演算子の具体的な使用法 (and、or、in、not)

目次1. はじめに2. 本文2.1 および演算子2.2 または演算子2.3 オペレーター2.4 no...

Unicode の一般的な文字の概要

初期のコンピューターのほとんどは ASCII 文字しか使用できませんでしたが、その後、主要な西洋のア...

jQueryチェーン呼び出しの詳細な説明

目次チェーン呼び出し小さなケースチェーン呼び出しjQuery オブジェクトが任意のメソッド (ノード...

Windows Server 2016 でサービスを展開する方法 (グラフィック チュートリアル)

導入インストールするシステムの数が多い場合、USB フラッシュ ドライブまたは CD を使用した手動...

CSSを使用して中央に固定された2つの列と適応型列を実現する方法

1. 絶対位置とマージンを使用するこの方法の原則は、左側と右側をドキュメントの流れから外れるように配...

CentOS のデフォルトの SSH ポート番号を変更する方法の例

LinuxサーバーのデフォルトのSSHポート番号は通常22なので、ほとんどのユーザーはセキュリティ上...

Docker を使用して pypi プライベート リポジトリを構築する方法

1. 建設1. htpasswd.txtファイルを準備するファイルには、パッケージを倉庫にアップロー...

MySQL の複数テーブル関連付け 1 対多クエリを使用して最新のデータを取得する方法の例

この記事では、MySQL で複数のテーブルを使用して 1 対多のクエリを使用して最新のデータを取得す...

macOS での MySQL 8.0.17 のインストールと簡単な設定チュートリアル

私が書いた内容が理解できない場合は、インターネット上に理解できるチュートリアルがない可能性があります...