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

推薦する

MySQLは現在の日付と時刻を取得する関数

現在の日付 + 時刻 (日付 + 時刻) を取得する関数: now() mysql> now(...

VMware vSphere6.0 サーバー仮想化の展開とインストールの図 (詳細な手順)

1. VMware vSphere 導入の早期計画のポイント1. vSphereの利点(わずかに)...

Vue マウスホイールスクロール切り替えルーティング効果を実装する方法

ルート ルーティング コンポーネント (アプリの下のルート ルーティング コンポーネント。子コンポー...

CentOS7 は rpm を使用して MySQL 5.7 をインストールするチュートリアル図

1. 4つのrpmパッケージをダウンロードする mysql-コミュニティクライアント-5.7.26-...

テーブルの動的な色の変更を実現するJavaScript

この記事では、テーブルの動的な色の変更を実現するためのJavaScriptの具体的なコードを参考まで...

MySql インデックスを表示および最適化する方法

MySQL はハッシュ インデックスと Btree インデックスをサポートしています。 InnoDB...

MySQL のダウンロードとインストールの詳細グラフィックチュートリアル

1. MySQLデータベースをダウンロードするには、公式Webサイトにアクセスしてください:http...

Vue.js フロントエンド Web ページ ポップアップ非同期動作例の分析

目次1. 序文2. ポップアップコンポーネントを2つ見つける3. 自分で作る3.1. Promise...

MySQLでユーザーを作成し、ユーザーに権限を付与する方法の詳細なチュートリアル

目次ユーザー管理新しいユーザーを作成するユーザー名の変更ユーザーのパスワードを設定するルートパスワー...

MySQL マスタースレーブ同期遅延の原因と解決策

歴史的な理由により、MySQL レプリケーションは、REDO ログではなく論理バイナリ ログに基づい...

MySQL 8.0.23 のインストールと設定方法のグラフィックチュートリアル (Win10 の場合)

この記事では、MySQL 8.0.23のインストールと設定方法を参考までに紹介します。具体的な内容は...

枠線や境界線のない iframe を使用するための完全ガイド (実践経験のまとめ)

<iframe src=”ページのURL” width=”100″ height=”30″ f...

ウェブサイト上のWeiboコンポーネントの再設計の詳細な紹介(写真とテキスト)

前面に書かれたWeibo コンポーネントは、サードパーティのアクセス ユーザーが開発を必要とせずに ...

CentOS6で定期的にjarプログラムを実行するスクリプトをcrontabで実行する

1. 簡単なJavaプログラムを書く パブリッククラステストシェル{ パブリック静的voidメイン(...