ホームページ  >  記事  >  運用・保守  >  Docker に nginx プラグイン ファイルをインストールする方法は何ですか?

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

WBOY
WBOY転載
2023-05-13 15:04:121772ブラウズ

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

  • このファイルは 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 までご連絡ください。