<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
當我們專案越來越多時手動去伺服器修改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)
這裡埠8080跑的服務是一個簡單的demo服務(nodejs),需要的可以從gitee獲取
https://gitee.com/lablelan/amis-demo
設定完etcd後我們可以看到存取http://www.lablelan.com/select已經成功返回了
可能這樣並不能體現出這個方案的實用性,其實我們可以通過在業務程式碼通過將當前服務資訊註冊到etcd實現服務發現功能,這樣就可以動態地生成nginx設定從而避免手動修改nginx設定減少出錯。
到此這篇關於docker中通過nginx+confd動態生成設定的流程解析的文章就介紹到這了,更多相關docker動態生成設定內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45