Heim >Betrieb und Instandhaltung >Nginx >Mit welcher Methode werden Nginx-Plug-in-Dateien unter Docker installiert?
Die Datei wird nicht durch die Docker-Image-Datei eingeschränkt. Sie kann den Container neu starten und die aktualisierte Datei nicht wiederherstellen
├── build.sh ├── docker-compose.yml ├── Dockerfile ├── mynginx.conf ├── nginx-vol │ ├── conf.d │ │ └── mynginx.conf │ ├── html │ │ └── index.html │ └── logs │ ├── access.log │ └── error.log └── run.sh
FROM nginx LABEL maintainer="xxx" email="<xxx@xxx.com>" app="nginx test" version="v1.0" ENV WEBDIR="/data/web/html" RUN mkdir -p ${WEBDIR} EXPOSE 5180Geben Sie basierend auf Nginx den neuen Datendateipfad als /data/ an. web/html, und der verfügbar gemachte Port ist 5180. Kompilieren Sie ein neues Image mit dem folgenden Befehl:
docker build -t nginx:test-v1 .
docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx test-v1 d2a0eaea3fac 56 minutes ago 141MB nginx latest 605c77e624dd 9 days ago 141MBSie können sehen, dass das Image mit dem Tag test-v1 einfach das neue Image ist zusammengestellt. Erstellen Sie das externe Nginx-Volume nginx-vol und die zugehörigen Ordner conf.d, logs und html und legen Sie die entsprechenden Inhalte in den entsprechenden Verzeichnissen ab. Der Inhalt von iindex.html im HTML-Ordner lautet beispielsweise wie folgt:
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>系统时间</title> <body> <div id="datetime"> <script> setInterval("document.getElementById('datetime').innerHTML=new Date().toLocaleString();",1000); </script> </div> </body> </head> </html>Tatsächlich handelt es sich lediglich um eine Seite, auf der die aktuelle Uhrzeit angezeigt wird. Der Abschnitt „Protokolle“ ist leer. Der Zweck besteht darin, die Protokolle in den externen Speicher zu schreiben, wenn der Container gestoppt oder das Image zerstört wird. conf.d unten ist die personalisierte Nginx-Konfiguration. Der Inhalt lautet wie folgt:
server { listen 5180; #listen [::]:5180; server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /data/web/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; # proxy the PHP scripts to Apache listening on 127.0.0.1:80 #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; # deny access to .htaccess files, if Apache's document root # concurs with nginx's one #location ~ /\.ht { # deny all; }Tatsächlich werden der Port und der Root-Pfad basierend auf der Standard-Default.conf von Nginx geändert. Der Zweck besteht darin, zu veranschaulichen, dass auch Nginx-Konfigurationsdateien verwendet werden können Externer Speicher: Wenn Ihr eigenes Programm die Konfigurationsdatei ändern kann, können Sie die Konfigurationsdatei auf diese Weise ändern, während der Container ausgeführt wird. Die geänderte Konfigurationsdatei wird tatsächlich im externen Speicher gespeichert, sodass sie nicht verschwindet, wenn der Container stoppt Die Dateien im Image werden nicht wiederhergestellt. Docker-AusführungsmodusDer Einfachheit halber können Sie den Ausführungsbefehl in ein Shell-Skript wie run.sh schreiben. Der Inhalt lautet wie folgt:
docker run --name nginx-v1 -p 15180:5180 -v /home/project/nginx-test/nginx-vol/logs:/var/log/nginx -v /home/project/nginx-test/nginx-vol/conf.d:/etc/nginx/conf.d -v /home/project/nginx-test/nginx-vol/html:/data/web/html -d nginx:test-v1Sie können sehen, dass der Befehl 3 -v enthält entsprechen unterschiedlichen externen Speicher-Mounts und werden verschiedenen Verzeichnissen innerhalb des Containers zugeordnet. Die Ports nach -p (beachten Sie, dass es sich um Kleinbuchstaben handelt) sind der Host-Port bzw. der Container-Port, dh der 15180-Port des Hosts wird dem 5180-Port des Containers zugeordnet, sodass der Nginx-Dienst-Port 5180 vom Container gestartet wird kann auf den 15180-Port des Hosts zugreifen und zugeordnet werden. Laufende Container anzeigen:
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cf2275da5130 nginx:test-v1 "/docker-entrypoint.…" 6 seconds ago Up 5 seconds 80/tcp, 0.0.0.0:15180->5180/tcp, :::15180->5180/tcp nginx-v1Detaillierte Zuordnung anzeigen:
docker inspect nginx-v1zeigt vollständige Informationen an, in denen die vollständige Speicher-Mount-Zuordnung im Abschnitt „Mounts“ eingesehen werden kann. Schauen Sie direkt unter nginx-vol/logs auf dem Host nach. Sie können sehen, dass das Nginx-Laufprotokoll im Container automatisch in den Speicher des externen Hosts geschrieben wird.
ls -l nginx-vol/logs/ total 12 -rw-r--r-- 1 root root 1397 1月 8 15:08 access.log -rw-r--r-- 1 root root 4255 1月 8 15:59 error.logContainer stoppen:
docker stop nginx-v1Container löschen:
docker rm nginx-v1Docker-Compose-Modus Docker-Compose installieren
apt-get install docker-composeDocker-compose.yml-Datei schreiben
version: "3" services: nginx: container_name: mynginx image: nginx:test-v1 ports: - 80:5180 volumes: - ./nginx-vol/html:/data/web/html - ./nginx-vol/logs:/var/log/nginx - ./nginx-vol/conf.d:/etc/nginx/conf.d restart: alwayscontainer_name: Geben Sie den Containernamen an Bild: zur Verwendung Spiegelung und entsprechende TagsPorts: Host-Port- und Container-Port-ZuordnungVolumes: Externe Speicher-Mount-ZuordnungStarten Sie den Container
docker-compose up -d Creating network "nginxtest_default" with the default driver Creating mynginx ... Creating mynginx ... doneSehen Sie sich den Container an
docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 635e2999c825 nginx:test-v1 "/docker-entrypoint.…" 24 seconds ago Up 22 seconds 80/tcp, 0.0.0.0:80->5180/tcp, :::80->5180/tcp mynginxSie können sehen, dass der Container gemäß Docker-Compose ausgeführt wird Die .yml-Konfiguration, der Port, der Name und der Mount sind alle normal. Der Zugriff auf Port 80 des Hosts entspricht dem 5180-Dienst des Containers. Stoppen Sie den Container
docker-compose down Stopping mynginx ... done Removing mynginx ... done Removing network nginxtest_defaultWie Sie sehen, ist es einfacher, Docker-Compose zu verwenden.
Das obige ist der detaillierte Inhalt vonMit welcher Methode werden Nginx-Plug-in-Dateien unter Docker installiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!