nginx如何在docker容器中自动生成配置文件(nginx+docker)

nginx如何在docker容器中自动生成配置文件(nginx+docker)

浏览次数:
信息来源: 用户投稿
更新日期: 2025-12-19
文章简介

实现思路最后运行的命令大概是这样:dockerrun-d-p80:80-exxx=xx镜像名称镜像中脚本路径这里的脚本会代替dockerfile中的cmd指令,所以我们要构建一个自动生成且启动n

2025阿里云双十一服务器活动

实现思路

最后运行的命令大概是这样:

dockerrun-d-p80:80-exxx=xx镜像名称镜像中脚本路径

这里的脚本会代替dockerfile中的cmd指令,所以我们要构建一个自动生成且启动nginx的shell脚本。

#从环境变量里面获取lt开头,为了与其他环境变量区别开,例如lt_analysis=172.17.0.1:8083

proxy_passhttp://${arr[1]}/${arr[0]}/;

#将nginx配置文件中nginx_conf中置换成变量result

sed-i"s|nginx_conf|$(echo${result})|g"/etc/nginx/nginx.conf

https://www.fruan.com/post/nginx

需要说明的一点是业务中并不需要将整个配置文件生成,只需要将其中location生成然后替换原配置文件中标记的位置,下面就是原配置文件标记的位置。

indexindex.htmlindex.htm;

...

我以为将这个shell脚本和默认的配置文件放入nginx的dockerfile镜像中,然后就成功了,但是...运行上述命令之后容器没有起来,查看容器日志,出来的信息却是***syntaxerror:“(”unexpected***。我的shell脚本在centos上经过测试是可以运行的,那么为什么会报这个错呢?经过排查,原来是dockerfile使用基础镜像是官方nginx,官方的镜像使用ubuntu不再使用bash来而是dash执行shell脚本,真是个坑。没办法我只好修改dockerfile,下面就是使用基础镜像centos。

envbuild_root/usr/local/xx/nginx

#为了减小最终生成的镜像占用的空间,这里没有执行yumupdate命令,可能不是好的实践

#为了加快构建速度,这里使用了163的安装源

&&mv/etc/yum.repos.d/centos-base.repo/etc/yum.repos.d/centos-base.repo.backup\

&&curlhttp://mirrors.163.com/.help/centos7-base-163.repo-o/etc/yum.repos.d/centos7-base-163.repo\

&&yum-yinstallgccgcc-c++makeperlzipunzip\

&&curlhttps://ftp.pcre.org/pub/pcre/pcre-$pcre_version.zip-o$build_root/pcre-$pcre_version.zip\

&&curlhttps://www.openssl.org/source/openssl-$openssl_version.tar.gz-o$build_root/openssl-$openssl_version.tar.gz\

&&curlhttp://www.zlib.net/zlib-$zlib_version.tar.gz-o$build_root/zlib-$zlib_version.tar.gz\

&&curlhttps://nginx.org/download/nginx-$nginx_version.tar.gz-o$build_root/nginx-$nginx_version.tar.gz\

&&tarvxzfnginx-$nginx_version.tar.gz\

&&unzippcre-$pcre_version.zip\

&&tarvxfzzlib-$zlib_version.tar.gz\

nginx如何在docker容器中自动生成配置文件,nginx+docker

&&cdnginx-$nginx_version\

--sbin-path=/usr/sbin/nginx\

--conf-path=/etc/nginx/nginx.conf\

--error-log-path=/var/log/nginx/error.log\

--http-log-path=/var/log/nginx/access.log\

--pid-path=/var/run/nginx.pid\

--lock-path=/var/run/nginx.lock\

--http-client-body-temp-path=/var/cache/nginx/client_temp\

--http-proxy-temp-path=/var/cache/nginx/proxy_temp\

--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp\

--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp\

--http-scgi-temp-path=/var/cache/nginx/scgi_temp\

--with-openssl=$build_root/openssl-$openssl_version\

--with-pcre=$build_root/pcre-$pcre_version\

--with-zlib=$build_root/zlib-$zlib_version\

&&mkdir-p/var/cache/nginx\

&&https://www.fruan.com/post/configure$build_config\

&&yum-yremovegccgcc-c++makeperlzipunzip\

copynginx.conf/etc/nginx/

#添加自动生成配置文件的shell脚本

cmd["nginx","-g","daemonoff;"]

提醒:docker容器不支持后台运行,当命令执行之后,容器也会自然退出,这里我们需要将nginx配置文件设置一下

#error_loglogs/error.log;

#error_loglogs/error.lognotice;

#error_loglogs/error.loginfo;

daemonoff;//这里添加,关闭后台运行

http{

以上就是nginx如何在docker容器中自动生成配置文件的详细内容,更多请关注主机测评网其它相关文章!

标签:
发现云业务解决方案的优势(发展云业务的挑战有哪些)
« 上一篇
返回列表
下一篇 »

如本文对您有帮助,就请抽根烟吧!