Docker nginx-proxyが起動時にハングする

Docker nginx-proxyが起動時にハングする

Docker バージョン 19.03.5、ビルド 633a0ea838

Linux xxx 5.0.0-37-一般 #40~18.04.1-Ubuntu SMP 2019年11月14日木曜日 12:06:39 UTC x86_64 x86_64 x86_64 GNU/Linux

同じシステム上の複数のWordPressインスタンスに対してDockerを使用してNginxプロキシを設定するには、このガイドに従ってください。pattonwebz複数のWordPressコンテナ nginx-proxyコンテナで作成されたDockerfileは次のとおりです。

version: '2'
services:
  nginx:
    image: jwilder/nginx-proxy:alpine 
    container_name: nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /etc/nginx/conf.d
      - /etc/nginx/vhost.d
      - /usr/share/nginx/html
      - ./certs:/etc/nginx/certs:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
    environment:
      - ENABLE_IPV6=true

  dockergen:
    image: jwilder/docker-gen
    container_name: dockergen
    command: -notify-sighup nginx -watch /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf
    volumes_from:
      - nginx
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro

  whoami:
    image: jwilder/whoami
    environment:
      - VIRTUAL_HOST=whoami.local

  nginx-letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    environment:
      #ACME_CA_URI:https://acme-staging.api.letsencrypt.org/directory
      - NGINX_DOCKER_GEN_CONTAINER=dockergen
    container_name: nginx-letsencrypt
    volumes_from:
      - nginx
    volumes:
      - ./certs:/etc/nginx/certs:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro

networks:
  default:
    external:
      name: nginx-proxy

ネットワークnginx-proxyを作成しましたが、クリーンな環境(ボリュームとコンテナがクリア)でこのコマンドを実行すると、次のエラーが発生します。

whoami_1             | Listening on :8000
nginx                | WARNING: /etc/nginx/dhparam/dhparam.pem was not found. A pre-generated dhparam.pem will be used for now while a new one
nginx                | is being generated in the background.  Once the new dhparam.pem is in place, nginx will be reloaded.
nginx                | Generating DH parameters, 2048 bit long safe prime, generator 2
nginx                | forego     | starting dockergen.1 on port 5000
nginx                | forego     | starting nginx.1 on port 5100
nginx                | dockergen.1 | 2020/01/12 17:57:26 Generated '/etc/nginx/conf.d/default.conf' from 4 containers
nginx                | dockergen.1 | 2020/01/12 17:57:26 Running 'nginx -s reload'
dockergen            | 2020/01/12 17:57:26 Generated '/etc/nginx/conf.d/default.conf' from 4 containers
dockergen            | 2020/01/12 17:57:26 Sending container 'nginx' signal '1'
dockergen            | 2020/01/12 17:57:26 Watching docker events
dockergen            | 2020/01/12 17:57:26 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification ''
nginx                | dockergen            | 2020/01/12 17:57:26 Received event die for container f34a91bce20f
nginx exited with code 2
dockergen            | 2020/01/12 17:57:26 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification ''
nginx-letsencrypt    | Info: Custom Diffie-Hellman group found, generation skipped.
nginx-letsencrypt    | Reloading nginx docker-gen (using separate container dockergen)...
dockergen            | 2020/01/12 17:57:27 Received signal: hangup
dockergen            | 2020/01/12 17:57:27 Received signal: hangup
nginx-letsencrypt    | Reloading nginx (using separate container f34a91bce20f421d03ef0e1a8190e55d0f592d4c2ef30920bcebaa527db4d60f)...
nginx-letsencrypt    | {"message":"Cannot kill container: f34a91bce20f421d03ef0e1a8190e55d0f592d4c2ef30920bcebaa527db4d60f: Container f34a91bce20f421d03ef0e1a8190e55d0f592d4c2ef30920bcebaa527db4d60f is not running"}
dockergen            | 2020/01/12 17:57:27 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification ''
nginx-letsencrypt    | 2020/01/12 17:57:27 Generated '/app/letsencrypt_service_data' from 3 containers
nginx-letsencrypt    | 2020/01/12 17:57:27 Running '/app/signal_le_service'
nginx-letsencrypt    | 2020/01/12 17:57:27 Watching docker events
nginx-letsencrypt    | 2020/01/12 17:57:27 Contents of /app/letsencrypt_service_data did not change. Skipping notification '/app/signal_le_service'
nginx-letsencrypt    | 2020/01/12 17:57:27 Error: nginx-proxy container f34a91bce20f421d03ef0e1a8190e55d0f592d4c2ef30920bcebaa527db4d60f isn't running.
nginx-letsencrypt    | Sleep for 3600s

したがって、nginxがコード2で終了すると、nginxがクラッシュし、問題が何であるかがわからないというメッセージが表示されます。また、nginxコンテナの行を無効にしようとしました。

 - /var/run/docker.sock:/tmp/docker.sock:ro

しかし幸運はありません。

答え1

これが唯一の問題ではないかもしれませんが、設定が間違っています。jwilder/nginx-proxynginxスクリプトとdockergenスクリプトを含むファイルを使用できます。独自の固定nginxイメージ(公式のnginxイメージから構築)を使用してから、それを構成jwilder/dockergenファイルを作成するコンパニオンとして使用しようとしています。しかし、これら2つの画像は使用しないでください。

jwilder/nginx-proxyこれは処理文書でよく説明されています。個別コンテナの設定

ログを詳しく見ると、nginxコンテナがdockergenを起動してからコンテナ内で同じことを試みることがわかりますdockergen。これはおそらく良い考えではないでしょう...

いずれかの構成(単一コンテナーまたはデュアルコンテナー)を変更することを決定し、再試行して問題が解決しないことを確認することをお勧めします。私は過去3年間、本番環境で別々のコンテナ設定を実行し、少なくとも毎月更新してきました。

関連情報