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

溫馨提示×

溫馨提示×

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

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

nginx如何在docker容器中自動生成配置文件

發布時間:2022-05-21 11:09:37 來源:億速云 閱讀:280 作者:zzz 欄目:大數據

這篇文章主要介紹“nginx如何在docker容器中自動生成配置文件”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“nginx如何在docker容器中自動生成配置文件”文章能幫助大家解決問題。

實現思路

最后運行的命令大概是這樣:

docker run -d -p 80:80 -e xxx=xx 鏡像名稱 鏡像中腳本路徑

這里的腳本會代替dockerfile中的cmd指令,所以我們要構建一個自動生成且啟動nginx的shell腳本。

#!/bin/bash

#從環境變量里面獲取lt開頭,為了與其他環境變量區別開,例如lt_analysis=172.17.0.1:8083
result=""
for a in $(env | grep ^lt)
do
 old_ifs="$ifs"
 ifs="_"
 arr=($a)
 b=${arr[1]}
 ifs="="
 arr=($b)
 ifs="$old_ifs"
 result="${result}
  location /${arr[0]}/ {
    proxy_pass  http://${arr[1]}/${arr[0]}/;
    proxy_connect_timeout 90;
    proxy_send_timeout 90;
    proxy_read_timeout 90;
  }"
done
#將nginx配置文件中nginx_conf中置換成變量result
sed -i "s|nginx_conf|$(echo ${result})|g" /etc/nginx/nginx.conf
cd /usr/sbin
./nginx

需要說明的一點是業務中并不需要將整個配置文件生成,只需要將其中location生成然后替換原配置文件中標記的位置,下面就是原配置文件標記的位置。

http {
  ...
  
  server {
    ...

    location / {
      root  html;
      index index.html index.htm;
    }

    nginx_conf

    #error_page 404       /404.html;
    ...

我以為將這個shell腳本和默認的配置文件放入nginx的dockerfile鏡像中,然后就成功了,但是...運行上述命令之后容器沒有起來,查看容器日志,出來的信息卻是***syntax error: “(” unexpected***。我的shell腳本在centos上經過測試是可以運行的,那么為什么會報這個錯呢? 經過排查,原來是dockerfile使用基礎鏡像是官方nginx,官方的鏡像使用ubuntu不再使用bash來而是dash執行shell腳本,真是個坑 。沒辦法我只好修改dockerfile,下面就是使用基礎鏡像centos。

from 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/local/xx/nginx

# 為了減小最終生成的鏡像占用的空間,這里沒有執行yum update命令,可能不是好的實踐
# 為了加快構建速度,這里使用了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-base-163.repo -o /etc/yum.repos.d/centos7-base-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/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 \
    --with-http_ssl_module \
    --with-http_v2_module \ 
    --with-threads \
    " \
  && mkdir -p /var/cache/nginx \
  && ./configure $build_config \
  && make && make install \
  && rm -rf $build_root \
  && yum -y remove gcc gcc-c++ make perl zip unzip \
  && yum clean all

#替換nginx默認文件
copy nginx.conf /etc/nginx/
#添加自動生成配置文件的shell腳本
copy 腳本名稱 /root/

#暴露端口
expose 80 443

cmd ["nginx", "-g", "daemon off;"]

提醒:docker容器不支持后臺運行,當命令執行之后,容器也會自然退出,這里我們需要將nginx配置文件設置一下

#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid    logs/nginx.pid;
daemon off;  //這里添加,關閉后臺運行
events {
  worker_connections 1024;
}


http {

關于“nginx如何在docker容器中自動生成配置文件”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

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

AI

嘉荫县| 大丰市| 鸡西市| 集贤县| 贡嘎县| 琼中| 射阳县| 舞阳县| 玛多县| 甘德县| 甘肃省| 普洱| 青神县| 吉首市| 天台县| 盐源县| 瑞丽市| 沂水县| 陵水| 泌阳县| 建湖县| 鹤峰县| 元谋县| 灌南县| 巫溪县| 德阳市| 奇台县| 景泰县| 汤原县| 呼玛县| 江山市| 武冈市| 蓝山县| 奉新县| 昭平县| 双流县| 武鸣县| 孝昌县| 安图县| 哈巴河县| 囊谦县|