Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Wie Nginx automatisch Konfigurationsdateien in Docker-Containern generiert

Wie Nginx automatisch Konfigurationsdateien in Docker-Containern generiert

PHPz
PHPznach vorne
2023-05-18 22:37:041137Durchsuche

Implementierungsidee

Der letzte auszuführende Befehl sieht wahrscheinlich so aus:

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

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

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;
    ...

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen