docker使用环境变量的方式动态配置nginx

这篇具有很好参考价值的文章主要介绍了docker使用环境变量的方式动态配置nginx。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、需求

使用docker部署nginx时,由于nginx配置文件里面的一些ip和端口是随着环境变化而改变的,即在不同的环境里,使用的ip和端口都不一样。这就导致每次部署到新环境时,都要重新编写配置文件,再制作成新的镜像,比较繁琐。

所以我想要制作一个通用的镜像,将ip和端口设置成变量,等到需要部署到其他环境时候,再相应地传入ip和端口变量值

参考文章:
使用docker环境变量动态配置nginx

二、制作镜像

2.1 准备nginx.tmplate模板文件

nginx.tmplate文件内容如下:

server{
   listen      80;
   server_name localhost;
   auth_basic "请输入账号密码";
   auth_basic_user_file /usr/share/nginx/htpasswd;   # 存放密码文件的路径

   location / {
      root  /usr/share/nginx/html/;
      index index.html;
   }

   location /skywalking/graphql {
      proxy_method POST;
      proxy_pass http://${SKYWALKING_SERVER_IP}:${SKYWALKING_SERVER_PORT}/graphql;
      # 此处的两个变量为容器启动时传入
   }

   location /skywalking {
      alias /usr/share/nginx/dist/;
      try_files $uri $uri/ /skywalking/index.html;
   }

   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
       root   /usr/share/nginx/html;
   }
}

其中${SKYWALKING_SERVER_IP}${SKYWALKING_SERVER_PORT}两个变量是根据环境变化而变化的

2.2 准备Dockerfile

# 1.继承基础nginx镜像
FROM nginx:1.21.5

RUN \
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone
# 2.将准备的模板文件拷贝到容器的配置文件目录
COPY ./deploy/nginx.template /etc/nginx/conf.d
# 3. 切换工作目录
WORKDIR /etc/nginx/conf.d
# 4. 添加环境变量的写入
ENTRYPOINT envsubst '$SKYWALKING_SERVER_IP $SKYWALKING_SERVER_PORT'  < nginx.template > default.conf && cat default.conf && nginx -g 'daemon off;'

EXPOSE 80

envsubst '$SKYWALKING_SERVER_IP $SKYWALKING_SERVER_PORT' < nginx.template > default.conf命令作用:

  1. 取环境变量$SKYWALKING_SERVER_IP$SKYWALKING_SERVER_PORT的值注入到模板文件 nginx.template相应的位置,(所以此处变量名要和模板文件中保持一致)
  2. 将替换好的模板内容输出到default.conf文件

envsubst命令使用参考:
https://blog.csdn.net/kozazyh/article/details/107905080

cat default.conf命令作用:
查看生成的defual.conf文件内容。方便后续容器启动的时候,直接使用docker logs命令查看

2.3 执行Dockerfile

执行命令docker build -t nginx-test:9.3.0 .,制作出镜像nginx-test:9.3.0

三、启动nginx

3.1 准备docker-compose.yml

docker-compose.yaml内容如下:

version: '3.1'
services:
    nginx:
        image: nginx-test:9.3.0      # 镜像名称
        container_name: nginx     # 容器名字
        restart: "no"     # 开机自动重启
        ports:     # 端口号绑定(宿主机:容器内)
            - '5080:80'
        environment:
            - SKYWALKING_SERVER_IP=47.106.225.35  #传入的变量值
            - SKYWALKING_SERVER_PORT=12800   #传入的变量值

执行命令:docker-compose up -d启动。

四、补充

4.1 关于nginx容器内配置文件的管理问题

参考文章:
https://www.cnblogs.com/fps2tao/p/9958009.html文章来源地址https://www.toymoban.com/news/detail-698183.html

到了这里,关于docker使用环境变量的方式动态配置nginx的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue启动配置npm run serve,动态环境变量,根据不同环境访问不同域名

    首先创建不同环境的配置文件,比如域名和一些常量,创建一个env文件,先看看文件目录 env.dev就是dev环境的域名,.test就是test环境域名,其他同理,然后配置package.json文件 scripts里面就是我们的运行配置,当我们执行npm run dev的时候就会读取env.dev文件里面的配置,其他同理,

    2024年02月12日
    浏览(34)
  • [运维|数据库] docker postgresql数据库环境变量配置

    要配置Docker中的PostgreSQL数据库的环境变量,可以使用以下方法: 使用Docker命令行: 将 用户名 , 密码 , 数据库名 替换为你想要设置的实际值。这将创建一个名为 mypostgres 的容器,并将 PostgreSQL 的用户名、密码和数据库名设置为指定的值。 -p 5432:5432 指定了容器内部和主机之间

    2024年02月09日
    浏览(52)
  • docker搭建的jenkins,jmeter和ant环境变量环配置

    参考文章 docker-jenkins+ant+jmeter持续集成_docker中部署jmeter+ant+jenkins-CSDN博客

    2024年02月07日
    浏览(30)
  • jenkins——环境变量、节点配置以及节点环境变量的使用

    Jenkins 环境变量就是通过 env 暴露出来的全局变量,可以在 Jenkins 文件的任何位置使用 a、系统内置环境变量 BUILD_NUMBER BUILD_URL JOB_NAME GIT_URL b、用户自定义环境变量 全局环境变量入口 Dashboard - 系统管理(Manage Jenkins) - 系统配置(Configure System)- 全局属性 linux部署:$变

    2023年04月26日
    浏览(35)
  • win10环境使用nvm安装多版本nodejs并配置环境变量

    最近使用node工程,需要多版本,并且进行切换,来回安装卸载不同版本的node比较麻烦,后面自己就简单捯饬了一下nvm来管理node,顺便记录一下自己的使用过程,以便于后续查找。 1.nvm安装,首先在官网下载 https://github.com/coreybutler/nvm-windows/releases 然后安装nvm-setup.exe: 注意:

    2024年01月20日
    浏览(46)
  • AndroidStudio配置adb环境变量和adb的使用

    adb环境变量的配置: 第一种方法 ①直接打开电脑-属性-高级配置-环境变量 ②将C:UsersAdminAppDataLocalAndroidSdkplatform-tools作为值,放到Path变量里面 第二种方法 ①创建一个android目录【类似于JAVA_HOME】 ②将C:UsersAdminAppDataLocalAndroidSdkplatform-tools作为值  配置在android中 ③将a

    2024年02月07日
    浏览(32)
  • 安装nvm,并使用nvm安装nodejs及配置环境变量

    1.下载nvm  解压后点击exe文件进行安装:  2、点击下一步安装到 D:NVM 下  3、先在D:NVM 下创建nodejs文件夹,然后将路径设置如下:  4、点击next 一直点击 完成安装; 5、找到指定nvm打开后: 给该文件添加这两行命令: node_mirror: https://npm.taobao.org/mirrors/node/ npm_mirror: https://npm

    2024年02月02日
    浏览(34)
  • 【vite·5】vite中环境变量的使用与配置(全网最全)

     根据当前的代码环境变化的变量就叫做 环境变量 。比如,在 生产环境 和 开发环境 将BASE_URL设置成不同的值,用来请求不同的环境的接口。 环境变量一般可以在全局访问到。在webapck中,我们也许看到过这样的代码  process.env.NODE_ENV就是一个环境变量。 process.env是Nodejs提供

    2024年02月01日
    浏览(37)
  • 【MySQL】MySQL的安装与配置环境变量(使其在控制台上使用)

    作者主页: paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《MySQL》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将MySQL基础知识一网打尽,希望可以帮到读者们哦。 其他专栏:《算法详

    2024年02月06日
    浏览(35)
  • vue3+vite中使用环境变量 .env 的一些配置情况说明

    在项目文件中新建文件.env .env.pro 两个文件其中.env 是默认设置 .env.pro 为正式环境设置 1、设置.env中的内容信息 注意vue3+vite 必须使用VITE开头的配置信息 否则无法获取 如果不想使用VITE开头自己修改就在vite.config.ts文件中添加envPrefix:“APP_” 2、在 vite 中使用环境变量,可以用

    2024年02月04日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包