3つのDocker Nginxログの処理の詳細な説明

3つのDocker Nginxログの処理の詳細な説明

社内の同僚は Nginx ログの標準出力、つまりコンソール経由の処理を必要としているため、まずログをファイルに書き込む必要があります。

エラーログ /var/log/nginx/error.log

アクセスログ /var/log/nginx/access.log

対処方法は 2 つあります。

1. ホスト パスを作成し、それをコンテナー内の nginx ログ パスにマウントします。

docker 実行 --name docker_nginx -d -p 80:80\ 
 -v /var/log/nginx/log:/var/log/nginx\
--!-v: ログディレクトリをマウントします

2. 2 番目は、ログ ファイルにアクセスして標準出力に直接出力する方法です。

走る \

  ln -sf /dev/stdout /var/log/nginx/access.log && \    
  ln -sf /dev/stderr /var/log/nginx/error.log 

2番目の方が良いと聞きました! ! !

これでログの問題は解決しました!

補足知識:コンテナログ出力のないカスタム docker nginx イメージ

たまたま、仕事環境用にnginxイメージをカスタマイズする必要がありました。生成後、コンテナに関連するnginxログ出力がないことがわかりました。

env_centos:latest から
 
nginx.repo を /etc/yum.repos.d/ にコピーします。 
# ログ出力はstdoutにリダイレクトする必要があることに注意してください。そうしないと、コンテナのログ出力が表示されません。RUN \
  yum -y nginx httpd-tools をインストール && \
  mkdir -p /data/nginx_conf/upstream && \
  mkdir -p /data/nginx_conf/vhosts && \
  rm -f /etc/nginx/conf.d/default.conf && \
  ln -sf /dev/stdout /var/log/nginx/access.log && \ > この 2 行が鍵です。もちろん、これは nginx 構成ファイルと一致している必要があります。コピーしないでください。ln -sf /dev/stderr /var/log/nginx/error.log > この 2 行が鍵です。COPY nginx.conf /etc/nginx/nginx.conf
 
エクスポーズ80
#エクスポーズ 443
 
CMD ["nginx", "-g", "デーモンオフ;"]

最終的な効果は次のようになります

#docker exec test123 ls -l /var/log/nginx/
lrwxrwxrwx 1 root root 11 12月 29 10:51 access.log -> /dev/stdout
lrwxrwxrwx 1 root root 11 12月 29 10:51 error.log -> /dev/stderr

以上、3つのDocker Nginxログの処理について詳しく説明しましたが、これが編集者が皆さんに共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 負荷分散と動的および静的分離操作を実現するDocker NginxコンテナとTomcatコンテナ
  • Dockerはnginxをデプロイし、フォルダとファイル操作をマウントします
  • Docker nginxは1つのホストを実装して複数のサイトを展開します
  • Docker デプロイメント nginx 実装プロセスのグラフィックとテキストによる詳細な説明
  • Docker イメージ + nginx を使用して Vue プロジェクトをデプロイする方法
  • Docker ベースの nginx ファイル サーバーを構築する方法と手順
  • Docker で Nginx イメージ サーバーを構築する方法
  • Docker Nginxコンテナの制作と展開の実装方法

<<:  MySQL マスタースレーブ同期、トランザクションロールバックの実装原理

>>:  vue+drf+サードパーティのスライディング検証コードアクセスの実装

推薦する

Vueベースのビデオプレーヤーの実装例

既存のビデオ プレーヤーがニーズを満たせない場合は、ビデオを自分でカプセル化する必要があります。ビデ...

MySQLサブクエリでorder byが効かない問題の解決方法

偶然にも、SQL ステートメントを異なる MySQL インスタンスで実行すると、異なる結果が生成され...

MySQLのGROUP BYステートメントを最適化する方法

MySQL で、id、a、b の 3 つのフィールドを持つ新しいテーブルを作成します。次のように、同...

SQL 文で OR と AND を混在させる場合のヒント

現在、このような要件があります。ログインした人がカスタマー サービス担当者である場合、注文は「このカ...

CSS リスト モデルでのマーカー タグの使用

この記事では主に、 list-itemの下にある::master疑似要素、 list-style-i...

HTML 特殊文字変換表

キャラクター小数点文字番号エンティティ名---未使用空間---スペースバー! ! ---感嘆符「 」...

MySQLでTEXT/BLOB型を使用する際の注意点を詳しく説明します

1. TEXTとBLOBの違いTEXT ファミリと BLOB ファミリの唯一の違いは、BLOB 型は...

開発にVscodeとdockerを組み合わせて使用​​する詳細なプロセス

序文Docker と VS Code を使用すると、ローカル開発環境全体を最適化し、プロジェクトの進...

なぜCSSをヘッドタグに配置する必要があるのか

考えてみてください。なぜcss 、 javascriptのようにbodyタグの末尾ではなく、 hea...

このリファレンスとJavaScriptのカスタムプロパティの詳細な説明

目次1. このキーワード2. カスタム属性3. 包括的なケース1:タブの実装付録要約する1. このキ...

Jsモジュール化の動作原理とソリューションの詳細な説明

目次1. モジュラーコンセプト2. モジュール化3. モジュール化プロセス1. 通常の記述(グローバ...

MySQL 8.0.12 の詳細なインストールおよびアンインストール チュートリアル

1. MySQL 8.0.12 バージョンのインストール手順。 1. ダウンロードhttps://d...

mysql5.7でbinlogを使用してデータを復元する方法

ステップ1: MySQLでbinlogが有効になっていることを確認する '%log_bin%...

選択タグ内のオプションをクリアする3つの方法

方法1コードをコピーコードは次のとおりです。 document.getElementById(&qu...

MySQLクエリ最適化: 100万件のデータに対するテーブル最適化ソリューション

1. 2つのクエリエンジン(myIsamエンジン)のクエリ速度InnoDB はテーブル内の特定の行数...