91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker中如何通過nginx+confd動態生成配置

發布時間:2022-03-07 09:11:00 來源:億速云 閱讀:269 作者:小新 欄目:開發技術

小編給大家分享一下docker中如何通過nginx+confd動態生成配置,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

當我們項目越來越多時手動去服務器修改nginx配置是一件很麻煩而且可能出錯的事情。我們可以通過nginx+confd+配置中心實現一套方案避免出錯并減少繁瑣的流程。

首先直接上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不使用127.0.0.1,因為服務并不跑在nginx容器上(注意www.lablelan.com我本地hosts設置成了127.0.0.1)

docker中如何通過nginx+confd動態生成配置

這里端口8080跑的服務是一個簡單的demo服務(nodejs),需要的可以從gitee獲取

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

配置完etcd后我們可以看到訪問http://www.lablelan.com/select已經成功返回了

docker中如何通過nginx+confd動態生成配置

可能這樣并不能體現出這個方案的實用性,其實我們可以通過在業務代碼通過將當前服務信息注冊到etcd實現服務發現功能,這樣就可以動態地生成nginx配置從而避免手動修改nginx配置減少出錯。

看完了這篇文章,相信你對“docker中如何通過nginx+confd動態生成配置”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

册亨县| 锦州市| 加查县| 张家口市| 兰溪市| 新蔡县| 临海市| 岳阳市| 杭锦旗| 麻江县| 视频| 闽侯县| 营口市| 泰安市| 晋州市| 阜南县| 琼结县| 大荔县| 会宁县| 平远县| 通江县| 阿荣旗| 五台县| 池州市| 集安市| 富顺县| 通许县| 土默特左旗| 常山县| 肃北| 万年县| 阳朔县| 虎林市| 梓潼县| 连城县| 永安市| 云和县| 肇源县| 乐昌市| 萨迦县| 长葛市|