複数のプロジェクトをデプロイする Docker nginx の例

複数のプロジェクトをデプロイする Docker nginx の例

前提条件

1. ローカルコンピュータとサーバーにDockerがインストールされています。ダウンロード方法はGoogleで検索してください。

2. Docker Hub にアカウントをお持ちの場合は、https://hub.docker.com/ で登録してください。

3. Dockerに精通し、Dockerfileのいくつかの指示を理解する必要があります。

Dockerfileを使用してイメージを作成する

このマシンにwebというプロジェクトがある場合

Webルートディレクトリに新しいDockerfileを作成し、次の内容を記述します。

nginx:1.13.6-alpineから
ラベル メンテナー="lilywang <[email protected]>"

ARG TZ="アジア/上海"

ENV TZ ${TZ}

apkアップグレード--update \を実行します
 && apk に bash tzdata を追加 \
 && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \
 && echo ${TZ} > /etc/timezone \
 && rm -rf /var/cache/apk/*

/usr/share/nginx/html をコピーする 

CMD ["nginx", "-g", "デーモンオフ;"]

現時点での Web 内のファイル構造は次のとおりです。

。
|____Dockerファイル
|____dist // プロジェクト用にパッケージ化されたファイル| |____index.html

次に、bashでWebディレクトリに入ります

CDウェブ

lilywang711 をビルドします。

印刷された情報に次の内容が表示された場合、イメージが正常に構築されたことを意味します。

4c050212ce0d の構築に成功しました
lilywang711/web:latest のタグ付けに成功しました

docker imagesと入力して現在のイメージリストを表示することもできます。

次に、コマンドdocker push lilywang711/webを入力して、ビルドしたイメージを Docker Hub にアップロードし、後でサーバーにイメージをプルできるようにします。

デプロイするプロジェクトが複数ある場合は、上記の手順を繰り返して、プロジェクトの数だけイメージをビルドします。

サーバーの展開

ssh経由でサーバーにログインし、現在のユーザーディレクトリ(私のディレクトリはルート)に新しいnginxフォルダを作成し、その中にnginx.confを作成します。
nginx.confに以下を記述します

ユーザー nginx;
ワーカープロセス 2;
error_log /var/log/nginx/error.log 警告;
pid /var/run/nginx.pid;
イベント {
 epoll を使用します。
 ワーカー接続数 2048;
}
http {
 /etc/nginx/mime.types を含めます。
 # /etc/nginx/conf.d/*.conf を含めます。
 ルート /usr/share/nginx/html;
 インデックス index.html index.htm;
 サーバー{
  聞く 80;
  server_name a.yourdomain.cn;
  位置 / {
  }
 }
 サーバー{
  聞く 80;
  サーバー名 b.yourdomain.cn;
  位置 / {
   proxy_pass http://your_vps_ip:81;
  }
 }
 サーバー{
  聞く 80;
  server_name ローカルホスト;
  位置 / {
  }
 }
}

次のステップ

Dockerを起動するsystemctl start docker

作成してアップロードした2つの画像をプルします

docker pull lilywang711/web

docker pull lilywang711/web1

コンテナを起動するには次のコマンドを入力します

docker run -itd --name web -p 80:80 -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf lilywang711/web
// -i はコンテナを対話モードで実行し、-t はコンテナに疑似端末を割り当て、-d はコンテナをバックグラウンドで実行します。-itd を直接記述できます。
// --name はコンテナに識別しやすいように web という名前を付けます // -p はポートをバインドします ローカルポート 80: コンテナポート 80
// -v はボリュームを宣言します。これは、コンテナ内の /etc/nginx/nginx.conf をホスト内の /root/nginx/nginx.conf にマウントすることを意味します。将来 nginx を構成するには、/root/nginx/nginx.conf を変更するだけで済みます。

別の lilywang711/web1 イメージでも同様です。ポートと名前を変更するだけです。

docker run -itd --name web1 -p 81:80 -v /root/nginx/nginx.conf:/etc/nginx/nginx.conf lilywang711/web1

この時点で、 docker psと入力すると、2 つのコンテナがすでに実行されていることがわかります。

プロジェクトのDocker化とnginxへのデプロイが完了しました

効果を確認するには、ブラウザに http://a.yourdomain.cn と http://b.yourdomain.cn と入力します。これらは、それぞれローカル コンピューターの web プロジェクトと web1 プロジェクトに対応します。

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

以下もご興味があるかもしれません:
  • DockerでNginx+PHP+MySQL環境を構築し、WordPressをデプロイする
  • Dockerでnginxをデプロイし、設定ファイルを変更する方法
  • 初心者のための Docker と NGINX の導入手順の詳細
  • Docker デプロイメント nginx 実装プロセスのグラフィックとテキストによる詳細な説明
  • DockerはNginxをデプロイし、リバースプロキシを構成する
  • Docker+Nginx を使ってシングルページアプリケーションをデプロイする
  • Docker Nginxコンテナの制作と展開の実装方法
  • Docker に Nginx をデプロイする方法

<<:  Vueルーティングコンポーネントでパラメータを渡す8つの方法の詳細な説明

>>:  Windows10にMySQL5.6.35データベースを2つインストールする

推薦する

CentOS 6 および 7 での MySQL 5.7 の詳細なインストール チュートリアル

開発には常にデータが必要です。サーバーとしての Linux では、テスト データを格納するためのデー...

入力が完了したことを検出し、次のコンテンツを自動的に入力する HTML を実装する方法

前回の記事では、入力完了の簡単な検出を実現しましたが、今回はさらに一歩進んで、入力が完了した後に次の...

Node.jsをゼロから学ぶ

目次URL モジュール1. 解析メソッド2. フォーマット方法3. 解決方法イベントモジュール(イベ...

Mysql5.7.14 インストールと設定方法操作グラフィックチュートリアル(パスワード問題解決)

この記事は主に、以前のインストール方法を使用して MySQL 5.7.14 をインストールするときに...

Dockerコンテナでの静的ウェブサイトレイアウトの実装

サーバーの配置数日間無料で使用できるクラウドサーバー(Alibaba Cloud、Huawei Cl...

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

この記事はMySQL 5.7.23 winx64のインストールチュートリアルを記録します。具体的な内...

ElementUI の el-dropdown に複数のパラメータを実装する方法

最近、業務上のボタンの増加により、ページレイアウトにボタンが多すぎて、ページが美しくなく、ユーザーエ...

一定期間の日ごと、時間ごとの統計データを取得するMySQLの詳しい説明

毎日の統計情報を取得するプロジェクトを実行する際、プロジェクト ログを分析する必要があります。要件の...

Centos7 環境でソースコードから mysql5.7.16 をインストールする方法の詳細な説明

この記事では、centos7 環境でソース コードから mysql5.7.16 をインストールする方...

MySQL トリガーの紹介、トリガーの作成、使用制限の分析

この記事では、例を使用して、MySQL トリガーの概要、トリガーの作成方法、およびトリガーの使用上の...

MySQL ロール関数の紹介

目次序文: 1. 役割の紹介2. 役割に関連する操作要約:序文:前回の記事では、MySQLの権限管理...

Windows での MySQL データベースのマスター/スレーブ構成チュートリアル

WindowsでMySQLデータベースのマスターとスレーブを構成する詳細なプロセスは次のとおりです。...

Windows7 での Mysql5.7 my.ini ファイルの読み込みパスとデータの場所の変更方法

更新: MySQL の公式 Web サイトにアクセスして MySQL インストーラーをインストールし...

Linux サーバーと Windows システム間でファイルをアップロードおよびダウンロードする方法

背景: Linux サーバーのファイルのアップロードとダウンロード。 XShell+Xftp インス...

CSS3 のフレックスレイアウト幅の無効性の解決策

2 列レイアウトはプロジェクトでよく使用されます。この効果を実現する方法はたくさんあります。 しかし...