Wie Nginx automatisch Konfigurationsdateien in Docker-Containern generiert

PHPz
Freigeben: 2023-05-18 22:37:04
nach vorne
1149 Leute haben es durchsucht

Implementierungsidee

Der letzte auszuführende Befehl sieht wahrscheinlich so aus:

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

Das Skript hier ersetzt den cmd-Befehl in der Docker-Datei, daher müssen wir ein Shell-Skript erstellen, das Nginx automatisch generiert und startet.

#!/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
Nach dem Login kopieren

Eine Sache, die erklärt werden muss, ist, dass nicht die gesamte Konfigurationsdatei im Unternehmen generiert werden muss. Sie müssen nur den Standort generieren und den in der ursprünglichen Konfigurationsdatei markierten Standort ersetzen in der ursprünglichen Konfigurationsdatei.

http {
  ...
  
  server {
    ...

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

    nginx_conf

    #error_page 404       /404.html;
    ...
Nach dem Login kopieren

Ich dachte, ich hätte dieses Shell-Skript und die Standardkonfigurationsdatei in das Nginx-Dockerfile-Image eingefügt, und dann war es erfolgreich, aber ... Nachdem ich den obigen Befehl ausgeführt hatte, wurde der Container nicht gestartet. Als ich das Containerprotokoll überprüfte, Die herausgekommenen Informationen waren** *Syntaxfehler: „(“ unerwartet***. Mein Shell-Skript wurde auf Centos getestet und kann ausgeführt werden, warum wird dieser Fehler also gemeldet? Nach der Untersuchung stellt sich heraus, dass das Basis-Image Die von der Docker-Datei verwendete offizielle Nginx-Datei verwendet nicht mehr Bash, sondern Dash, um Shell-Skripte auszuführen. Ich habe keine andere Wahl, als die Docker-Datei zu ändern. Hier ist die grundlegende Image-Erinnerung : Docker-Container unterstützen die Ausführung im Hintergrund nicht. Der Container wird auch auf natürliche Weise beendet. Hier müssen wir die Nginx-Konfigurationsdatei festlegen

Das obige ist der detaillierte Inhalt vonWie Nginx automatisch Konfigurationsdateien in Docker-Containern generiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage