使用nginx怎么在码头工人容器中自动生成配置文件

  介绍

使用nginx怎么在码头工人容器中自动生成配置文件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>实现思路

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

docker  run  -d  -p  80:80  -e  xxx=xx 镜像名称,镜像中脚本路径

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

# !/bin/bash      #从环境变量里面获取lt开的头,为了与其他环境变量区别开,例如lt_analysis=172.17.0.1:8083   结果=?“   for  a 美元拷贝(env  |, grep  ^ lt)   做   ,OLD_IFS=癐FS"美元;   ,IFS=癬"   ,arr=(美元)   [1]的arr, b=$ {}   ,IFS=??   ,arr=(b)美元   ,IFS=癘LD_IFS"美元;   结果,结果=? {}   的位置才能/$ {arr [0]}, {   ,,,proxy_pass , http://$ {arr [1]}/{arr[0]}/美元;   ,,,proxy_connect_timeout  90;   ,,,proxy_send_timeout  90;   ,,,proxy_read_timeout  90;   }“才能;   完成   #将nginx配置文件中nginx_conf中置换成变量的结果   sed 我;“年代| nginx_conf | $ (echo  ${结果})| g"/etc/nginx/nginx.conf   cd /usr/sbin   。/nginx

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

http  {   ,,…   ,,   server {才能   ,,,…      ,,,的位置/,{   ,,,,,root , html;   ,,,,,index  index.html 你可以;   ,,,}      ,,nginx_conf      ,,,# error_page  404年,,,,,,,/html 404.;   ,,,…

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

得到centos      ENV  NGINX_VERSION  1.10.3   ENV  OPENSSL_VERSION  1.0.2k   ENV  PCRE_VERSION  8.40   ENV  ZLIB_VERSION  1.2.11   ENV  BUILD_ROOT /usr/地方/xx/nginx      #,为了减小最终生成的镜像占用的空间,这里没有执行yum 更新命令,可能不是好的实践   #,为了加快构建速度,这里使用了163年的安装源   # RUN  yum  -y  update  \   RUN  yum  -y  install  curl  \   ,,,,,mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup  \   ,,,,,curl  http://mirrors.163.com/.help/centos7 -基地- 163. repo  -o /etc/yum.repos.d/centos7 -基地- 163. repo  \,   ,,,,,yum  -y  install  gcc  gcc-c + +, make  perl  zip  unzip  \   ,,,,,mkdir  -p  BUILD_ROOT 美元;\   ,,,,,cd  BUILD_ROOT 美元;\   ,,,,,curl  https://ftp.pcre.org/pub/pcre/pcre- PCRE_VERSION.zip 美元;-o  BUILD_ROOT/pcre - PCRE_VERSION.zip 美元;\   ,,,,,curl  https://www.openssl.org/source/openssl- OPENSSL_VERSION.tar.gz 美元;-o  BUILD_ROOT/openssl - OPENSSL_VERSION.tar.gz 美元;\   ,,,,,curl  http://www.zlib.net/zlib- ZLIB_VERSION.tar.gz 美元;-o  BUILD_ROOT/zlib - ZLIB_VERSION.tar.gz 美元;\   ,,,,,curl  https://nginx.org/download/nginx- NGINX_VERSION.tar.gz 美元;-o  BUILD_ROOT/nginx - NGINX_VERSION.tar.gz 美元;\   ,,,,,tar  vxzf  nginx - NGINX_VERSION.tar.gz 美元;\   ,,,,,unzip  pcre - PCRE_VERSION.zip 美元;\   ,,,,,tar  vxfz  zlib - ZLIB_VERSION.tar.gz 美元;\   ,,,,,tar  vxfz  openssl - OPENSSL_VERSION.tar.gz 美元;\   ,,,,,cd  nginx - NGINX_VERSION 美元;\   ,,,,BUILD_CONFIG=癨   ,,,——prefix=/etc/nginx  \   ,,,,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/缓存/nginx/client_temp  \   ,,,,http-proxy-temp-path=/var/缓存/nginx/proxy_temp  \   ,,,,http-fastcgi-temp-path=/var/缓存/nginx/fastcgi_temp  \   ,,,,http-uwsgi-temp-path=/var/缓存/nginx/uwsgi_temp  \   ,,,,http-scgi-temp-path=/var/缓存/nginx/scgi_temp  \   ,,,,使用openssl=BUILD_ROOT/openssl - OPENSSL_VERSION 美元;\   ,,,,with-pcre=BUILD_ROOT/pcre - PCRE_VERSION 美元;\   ,,,,with-zlib=BUILD_ROOT/zlib - ZLIB_VERSION 美元;\   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用nginx怎么在码头工人容器中自动生成配置文件