Docker に nginx プラグイン ファイルをインストールする方法は何ですか?

WBOY
リリース: 2023-05-13 15:04:12
転載
1722 人が閲覧しました

プラグイン ファイルの目的:

  • このファイルは Docker イメージ ファイルによってバインドされていません。変更したり、コンテナーを再起動したり、ファイルを更新したりできます。イメージでは復元されません

  • コンテナの実行中に記録されたログやその他の情報などのファイルは、外部ストレージに自動的に保存され、失われることはありませんコンテナを再起動するため

# コンテナを実行するには 2 つの方法があります:

  • docker run コマンド

  • docker-compose コマンド

docker run コマンド メソッドでは、-v パラメーターを使用して、外部ホスト ディレクトリをコンテナー内のパスにマウントします。複数のマウント ポイントがある場合は、次のように指定します。複数の -v パラメーターを使用してそれらを指定し、絶対パスのみを使用できます。docker-compose コマンドでは、サービス メソッドの説明が簡単です。正確に言うと、サービスには複数のコンテナーを含めることができ、外部パスのマウント構成も同様です。 -v パラメーターを使用して構成します。利点は、相対パス (もちろん docker-compose.yml ファイルのパスを基準とした相対パス) を使用できることです。もう 1 つの利点は、docker-compose でコンテナーを起動するコマンドが比較的単純であることです。

イメージのパッケージ化パス構造が次のとおりであるとします。

├── build.sh
├── docker-compose.yml
├── Dockerfile
├── mynginx.conf
├── nginx-vol
│   ├── conf.d
│   │   └── mynginx.conf
│   ├── html
│   │   └── index.html
│   └── logs
│       ├── access.log
│       └── error.log
└── run.sh
ログイン後にコピー

Dockerfile はイメージを構築するための構成ファイルであり、内容は次のとおりです。

FROM nginx
LABEL maintainer="xxx" email="<xxx@xxx.com>" app="nginx test" version="v1.0"
ENV WEBDIR="/data/web/html"
RUN mkdir -p ${WEBDIR}
EXPOSE 5180
ログイン後にコピー

Based on nginx の場合、新しいデータ ファイル パスを /data/web/html として指定し、公開ポートは 5180 です。

次のコマンドを使用して新しいイメージをコンパイルします:

docker build -t nginx:test-v1 .
ログイン後にコピー

コンパイルされたイメージ タグは test-v1 で、ローカル イメージを表示できます:

docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        test-v1   d2a0eaea3fac   56 minutes ago   141MB
nginx        latest    605c77e624dd   9 days ago       141MB
ログイン後にコピー

TAG はテストです。v1 イメージはコンパイルされたばかりの新しいイメージです。

nginx 外部ボリューム nginx-vol と関連する conf.d、logs、html フォルダーを作成し、対応するコンテンツを対応するディレクトリに配置します。たとえば、html フォルダー内の iindex.html の内容は次のとおりです。

<html>
        <head>
                <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
                <title>系统时间</title>
        <body>
                <div id="datetime">
                        <script>
                                setInterval("document.getElementById(&#39;datetime&#39;).innerHTML=new Date().toLocaleString();",1000);
                        </script>
                </div>
        </body>
        </head>
</html>
ログイン後にコピー

は、実際には現在時刻を表示する単なるページです。

ログ セクションは空です。コンテナの実行中にログを外部ストレージに書き込むことが目的です。コンテナが停止したり、イメージが破壊された場合でも、実行ログは保持されます。以下の

conf.d は nginx の個人用設定で、内容は次のとおりです:

server {
    listen       5180;
    #listen  [::]:5180;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;
    location / {
        root   /data/web/html;
        index  index.html index.htm;
    }
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    # deny access to .htaccess files, if Apache&#39;s document root
    # concurs with nginx&#39;s one
    #location ~ /\.ht {
    #    deny  all;
}
ログイン後にコピー

実際、ポートとルート パスは nginx のデフォルトの default.conf に基づいて変更されます。目的は次のとおりです。 nginx の図解 構成ファイルは外部に保存することもできます。独自のプログラムで構成ファイルを変更できる場合、この方法でコンテナの実行中に構成ファイルを変更できます。変更された構成ファイルは実際には外部ストレージに保存されます。コンテナーの実行が停止すると消え、イメージ内のファイルには復元されません。

docker run モード

便宜上、実行コマンドを run.sh などのシェル スクリプトに書き込むことができます。内容は次のとおりです。

docker run --name nginx-v1 -p 15180:5180 -v /home/project/nginx-test/nginx-vol/logs:/var/log/nginx -v /home/project/nginx-test/nginx-vol/conf.d:/etc/nginx/conf.d -v /home/project/nginx-test/nginx-vol/html:/data/web/html -d nginx:test-v1
ログイン後にコピー

コマンドに 3 があることを確認してください。各 -v は異なる外部ストレージ マウントに対応し、コンテナ内の異なるディレクトリにマップされます。

-p の後のポート (小文字であることに注意してください) は、それぞれホスト ポートとコンテナ ポートです。つまり、ホストのポート 15180 はコンテナのポート 5180 にマッピングされるため、nginx サービス ポート 5180コンテナによって開始されたホストには、ホストのポート 15180 がマッピングされています。

実行中のコンテナの表示:

docker ps -a
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS                                                 NAMES
cf2275da5130   nginx:test-v1   "/docker-entrypoint.…"   6 seconds ago   Up 5 seconds   80/tcp, 0.0.0.0:15180->5180/tcp, :::15180->5180/tcp   nginx-v1
ログイン後にコピー

詳細なマッピング ビュー:

docker inspect nginx-v1
ログイン後にコピー

完全な情報が表示され、完全なストレージ マウント マッピングが「マウント」セクションで確認できます。状態。

ホストの nginx-vol/logs の直下を確認すると、コンテナ内の nginx 実行ログが外部ホストのストレージに自動的に書き込まれていることがわかります。

ls -l nginx-vol/logs/
total 12
-rw-r--r-- 1 root root 1397 1月   8 15:08 access.log
-rw-r--r-- 1 root root 4255 1月   8 15:59 error.log
ログイン後にコピー

コンテナの停止:

docker stop nginx-v1
ログイン後にコピー

コンテナの削除:

docker rm nginx-v1
ログイン後にコピー

docker-compose mode

docker-compose のインストール

apt-get install docker-compose	
ログイン後にコピー

docker の書き込み-compose.yml file

version: "3"
services:
        nginx:
                container_name: mynginx
                image: nginx:test-v1
                ports:
                        - 80:5180
                volumes:
                        - ./nginx-vol/html:/data/web/html
                        - ./nginx-vol/logs:/var/log/nginx
                        - ./nginx-vol/conf.d:/etc/nginx/conf.d
                restart: always
ログイン後にコピー

container_name: コンテナ名を指定します

image: 使用するイメージと対応するラベル

ports: ホスト ポートとコンテナ ポートのマッピング

ボリューム: 外部ストレージ マウント マッピング

コンテナの開始

docker-compose up -d
Creating network "nginxtest_default" with the default driver
Creating mynginx ...
Creating mynginx ... done
ログイン後にコピー

コンテナの表示

docker ps -a
CONTAINER ID   IMAGE           COMMAND                  CREATED          STATUS          PORTS                                           NAMES
635e2999c825   nginx:test-v1   "/docker-entrypoint.…"   24 seconds ago   Up 22 seconds   80/tcp, 0.0.0.0:80->5180/tcp, :::80->5180/tcp   mynginx
ログイン後にコピー

コンテナが docker に従って実行されていることがわかります。 compose.yml の設定、ポート、名前、マウントはすべて正常です。ホストのポート 80 へのアクセスは、コンテナーの 5180 サービスに対応します。

コンテナを停止します

docker-compose down
Stopping mynginx ... done
Removing mynginx ... done
Removing network nginxtest_default
ログイン後にコピー
ご覧のとおり、docker-compose を使用する方が簡単です。

以上がDocker に nginx プラグイン ファイルをインストールする方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!