Docker で nginx+confd を使用して構成を動的に生成する方法

WBOY
リリース: 2023-05-27 13:04:24
転載
1831 人が閲覧しました

プロジェクトの数が増えると、手動でサーバーにアクセスして nginx 構成を変更するのは非常に面倒で、失敗する可能性があります。 nginx confd Configuration Center を通じて、エラーを回避し、煩雑なプロセスを軽減するための一連のソリューションを実装できます。

まず、nginx confdの dockerfile に直接移動します

FROM nginx:1.21.6
# 拷贝confd二进制可执行文件 https://github.com/kelseyhightower/confd/releases/tag/v0.16.0
COPY ./confd-0.16.0-linux-amd64 /usr/local/bin/confd
# 拷贝wait-for脚本 https://github.com/Eficode/wait-for
COPY ./wait-for /
# 安装nc支持wait-for脚本
RUN apt-get update \
  && DEBIAN_FRONTEND=noninteractive apt-get install -y \
    net-tools \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*
RUN apt-get update \
  && DEBIAN_FRONTEND=noninteractive apt-get install -y \
    netcat \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*
# 创建配置文件目录
RUN mkdir -p /etc/confd/conf.d \
# 给可执行权限
&& chmod +x /usr/local/bin/confd \
&& chmod 777 /wait-for \
# 使用脚本启动多进程
&& echo "#!/bin/bash" >> start.sh \
&& echo "nohup /usr/local/bin/confd -config-file /etc/confd/conf/confd.toml &" >> start.sh \
&& echo "nginx -g 'daemon off;'" >> start.sh \
&& chmod 664 ./start.sh 
CMD ["bash", "start.sh"]
ログイン後にコピー

自分で生成したくない場合は、次を使用できます:

https:// Hub.docker.com/repository/docker/ lablelan/nginx-confd

Docker-compose は、nginx confd etcd etcdkeeper を使用して nginx 構成をグラフィカルに変更する方法を示すためにここで使用されています

version: '2'
networks:
  app-tier:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.22.0.0/16
services:
  Etcd:
    image: 'bitnami/etcd:3.5.2'
    environment:
      - ALLOW_NONE_AUTHENTICATION=yes
      - ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379
    ports:
      - 2379:2379
      - 2380:2380
    networks:
      app-tier:
        ipv4_address: 172.22.0.2
  EtcdKeeper:
    image: 'deltaprojects/etcdkeeper:latest'
      - 8000:8080
        ipv4_address: 172.22.0.3
  Nginx:
    image: 'lablelan/nginx-confd'
    command: sh -c '/wait-for Etcd:2379 -- bash start.sh'
    depends_on: 
      - Etcd
    volumes:
      - "./confd.toml:/etc/confd/conf/confd.toml"
      - "./nginx.tmpl:/etc/confd/templates/nginx.tmpl"
      - "./myapp-nginx.toml:/etc/confd/conf.d/myapp-nginx.toml"
      - "./nginx.conf:/etc/nginx/nginx.conf"
      - "./conf.d:/etc/nginx/conf.d"
      - 80:80
        ipv4_address: 172.22.0.4
ログイン後にコピー

起動後、etcdkeeper を通じて /myapp が作成または更新されると、/services/web/www/1 は nginx 構成を動的に生成し (ポート 80 がポート 8080 に転送します)、自動的に有効になります。ここで構成された IP はイントラネット IP であり、サービスは nginx コンテナ上で実行されないため、127.0.0.1 は使用されません (www.lablelan.com のローカル ホストが 127.0.0.1 に設定されていることに注意してください)

Docker で nginx+confd を使用して構成を動的に生成する方法

ここでポート 8080 で実行されているサービスは、単純なデモ サービス (nodejs) です。必要な場合は、gitee から入手できます

https:// gitee.com/lablelan/amis-demo

etcd を構成した後、http://www.lablelan.com/select へのアクセスが正常に返されたことがわかります。

これは当てはまらないかもしれません これはこのソリューションの実用性を反映していません. 実際には、現在のサービス情報をビジネス コード内の etcd に登録することで、サービス検出機能を実現できます。 nginx 構成の手動変更を回避し、エラーを減らすために動的に生成できます。 Docker で nginx+confd を使用して構成を動的に生成する方法

以上がDocker で nginx+confd を使用して構成を動的に生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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