Dockerでnginxをデプロイし、設定ファイルを変更する方法

Dockerでnginxをデプロイし、設定ファイルを変更する方法

Dockerでnginxをデプロイするのはとても簡単です

たった 1 行のコマンド:

docker 実行 \
 --name nginx-health-web-pc \
 -d -p 6800:80 \
 nginx のディレクトリを /usr/docker/nginx/html にコピーします。
 nginx

実行して起動するのは楽しいです~~~~~このと​​き、フロントエンドが突然やって来て、「nginx に設定を追加する必要があります」と言い、さらに「誰それさんが以前このように設定しました」とも言います。

もちろんこの時点で拒否することはできませんが、実際の構成にはまだ少し考えが必要です。通常、Docker は起動時に構成されます。構成ファイルのディレクトリをマウントするだけで、シンプルで便利です。ただし、nginx は最初にメイン構成ファイル nginx.conf をロードし、次に nginx.conf 内の conf.d ディレクトリにあるサブ構成ファイル (通常は少なくとも 1 つの default.conf ファイル) をロードします。これはディレクトリを個別にマウントするよりもはるかに面倒ですが、明確なアイデアがあれば難しくはありません。

まず、マウントされたコマンドを見てみましょう。

Dockerコマンドを起動する

docker 実行 \
 --name myNginx \
 -d -p 80:80 \
 -v /usr/docker/myNginx/html:/usr/share/nginx/html \
 nginx.conf を /etc/docker/myNginx/nginx.conf にコピーします。
 ディレクトリを /etc/docker/myNginx/conf.d に変更します。
 nginx

ここで注意すべき点がいくつかあります:

(1) 最初の「-v」はプロジェクトの場所です。プロジェクトをマウントされているディレクトリに置くだけです。

(2) 2 番目の「-v」はマウントされているメイン設定ファイル「nginx.conf」です。「nginx.conf」ファイルには「include /etc/nginx/conf.d/*.conf;」という行があることに注意してください。この include はサブ設定ファイルのパスを指しています。include に続くパスは間違ってはならないことに注意してください。

(3) 3番目の「-v」は、サブ構成ファイルのパスをDockerにマウントします。これは、(2)のincludeで指定されたパスと一致している必要があることに注意してください。

(4) nginx.confはファイルをマウントし(Dockerはこれを推奨していません)、conf.dはディレクトリをマウントすることを強調することが重要です。

まず起動して、設定ファイルがまだ存在しないために問題があることを確認します。

プロファイルの設定

従来の方法でnginxをインストールしたときに生成された設定ファイル(通常は「/etc/nginx」の下)を上記の起動コマンドのマウント場所に対応して探し、メイン設定ファイルnginx.confを対応する場所「/etc/docker/myNginx/nginx.conf」に配置し、サブ設定ファイル「default.conf」を「/etc/docker/myNginx/conf.d」ディレクトリに配置します。

起動コマンドを再実行し、すでに正常であることを確認します。この時点で、docker内のファイルは自由に構成できます。これは、ネイティブインストールとまったく同じです。

アイデア: 構成するときには、マウントされたファイルは実行時に docker プロセスにロードされる必要があるというアイデアが必要です。こうすれば混乱しにくくなります。

---------------------------------------------------分割線-------------------------------------------------------

設定ファイルを投稿します:

nginx.conf

ユーザー root;
ワーカープロセス 1;
 
error_log /var/log/nginx/error.log 警告;
pid /var/run/nginx.pid;
 
 
イベント {
 ワーカー接続 1024;
}
 
 
http {
 /etc/nginx/mime.types を含めます。
 デフォルトタイプ アプリケーション/オクテットストリーム;
 
 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for"';
 
 access_log /var/log/nginx/access.log メイン;
 
 ファイル送信オン;
 #tcp_nopush オン;
 
 キープアライブタイムアウト65;
 
 自動インデックスオン;
 
 #gzip オン;
 
 /etc/nginx/conf.d/*.conf を含めます。
 クライアントの最大ボディサイズは100Mです。
 クライアント_ヘッダー_バッファ_サイズ 128k;
 ラージクライアントヘッダーバッファ 4 128k;
}

デフォルト.conf

サーバー{
 聞く 80;
 server_name ローカルホスト;
 
 #文字セット koi8-r;
 #access_log /var/log/nginx/log/host.access.log メイン;
 
 位置 / {
  ルート /usr/nginx/dacheng-wechat-web;
  # ルート /usr/nginx/html;
  インデックス index.html index.htm;
  自動インデックスオン;
 try_files $uri /index/index/page.html;
  #try_files $uri /index/map/page.html;
 }
 
 #エラーページ 404 /404.html;
 
 # サーバーのエラーページを静的ページ /50x.html にリダイレクトします
 #
 エラーページ 500 502 503 504 /50x.html;
 場所 = /50x.html {
  ルート /usr/share/nginx/html;
 }
 
 # PHP スクリプトを 127.0.0.1:80 で listen している Apache にプロキシします
 #
 #場所 ~ \.php$ {
 # プロキシパス http://127.0.0.1;
 #}
 
 # PHP スクリプトを 127.0.0.1:9000 で待機している FastCGI サーバーに渡します
 #
 #場所 ~ \.php$ {
 #ルートhtml;
 #fastcgi_pass 127.0.0.1:9000;
 # fastcgi_index インデックス.php;
 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
 #fastcgi_params を含めます。
 #}
 
 # Apacheのドキュメントルートが.htaccessファイルへのアクセスを拒否する
 # nginxのものと一致します
 #
 #場所 ~ /\.ht {
 # すべて拒否;
 #}
}

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

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

<<:  vue WatchとComputedの使用の概要

>>:  Linux での MySQL 5.7 の導入とリモート アクセス構成

推薦する

Tomcat を使用して Centos 環境に SpringBoot WAR パッケージをデプロイする

戦争パッケージを準備する1. 既存のSpringBootプロジェクトを準備し、pomに依存関係を追加...

HTML 代替カラーコードを実現する n 通りの方法 サンプルコード

この記事では、主に HTML のサンプル コードを紹介し、次のように交互に色を変更する方法を共有しま...

Kafka と Nginx の統合例

背景nginx-kafka-module は、Kafka を nginx に統合して、Web プロジ...

MySQL に 1,000 万件のレコードを素早く挿入する方法

面接で「MySQL に 1,000 万件のレコードをすばやく挿入するにはどうすればよいか」という質問...

MySQL における distinct と group by の違い

簡単に言うと、distinct は重複を削除するために使用され、group by は統計を集計するよ...

MySQLストアドプロシージャにおけるカーソル(DECLARE)の原理と使い方の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャにおけるカーソル (DECLARE) ...

Tcl言語に基づくシンプルなネットワーク環境を構成するプロセスの分析

1. Tclスクリプトファイルcircle.tclコードコメント #シミュレーションに必要なプロパテ...

MySQL SQL文を最適化するためのヒント

十分に最適化されていない、またはパフォーマンスが極端に低い SQL ステートメントに直面した場合、通...

MySQL 8.0 の新機能の落とし穴と解決策についての簡単な説明 (要約)

1. ユーザーを作成して承認するMySQL 8.0 では、ユーザーの作成と認証が以前とは異なります...

Windows 10 Home Edition に Docker をインストールする方法

最近、プロジェクトをアップグレードするために Docker を使用しました。これまで使用したことがな...

Mysql のいくつかの複雑な SQL ステートメント (重複行のクエリと削除)

1. 重複行を見つける blog_user_relation a から * を選択 WHERE (...

Vue は動的な円形のパーセンテージ進捗バーを実装します

最近、小さなプログラムを開発しているときに、次の設計図のような円形のパーセンテージ進捗状況バーを実装...

DockerHubを自分で構築する方法

先ほど使用したDocker HubはDockerによって提供されています。独自のDockerを構築す...

MySQL の自動インクリメント主キーが連続していないのはなぜですか?

目次1. はじめに2. 自己増分ストレージの説明3つの自己付加価値修正メカニズム4. 自己評価を修正...

CSSは5つの一般的な2D変換を実装します

CSS の 2D 変換を使用すると、移動、回転、拡大縮小、変形などの基本的な変換操作を 2 次元空間...