Mit welcher Methode werden Nginx-Plug-in-Dateien unter Docker installiert?

WBOY
Freigeben: 2023-05-13 15:04:12
nach vorne
1698 Leute haben es durchsucht

Der Zweck der Plug-in-Datei:

  • Die Datei wird nicht durch die Docker-Image-Datei eingeschränkt. Sie kann den Container neu starten und die aktualisierte Datei nicht wiederherstellen

  • Dateien, die während der Ausführung des Containers aufgezeichnet werden, wie z. B. Protokolle. Informationen wie diese können automatisch auf einem externen Speicher gespeichert werden und gehen nicht durch Neustarts des Containers verloren

Es gibt zwei Möglichkeiten, einen Container auszuführen:

  • Docker-Run-Befehl

  • Docker-Compose-Befehl

Die Docker-Run-Befehlsmethode verwendet den Parameter -v, um das externe Hostverzeichnis im Pfad innerhalb des Containers bereitzustellen. Wenn mehrere Bereitstellungspunkte vorhanden sind, geben Sie diese über mehrere an -v-Parameter und nur absolute Pfade können verwendet werden. Der Befehl docker-compose ist einfach zu beschreiben. Um genau zu sein, kann ein Dienst mehrere Container enthalten, und die Bereitstellungskonfiguration des externen Pfads wird ebenfalls konfiguriert -v-Parameter. Der Vorteil besteht darin, dass Sie einen relativen Pfad verwenden können, der natürlich relativ zum Pfad der Datei docker-compose.yml ist. Ein weiterer Vorteil besteht darin, dass der Befehl für Docker-Compose zum Starten des Containers relativ einfach ist.

Angenommen, die Struktur des Bildverpackungspfads lautet wie folgt:

├── build.sh ├── docker-compose.yml ├── Dockerfile ├── mynginx.conf ├── nginx-vol │ ├── conf.d │ │ └── mynginx.conf │ ├── html │ │ └── index.html │ └── logs │ ├── access.log │ └── error.log └── run.sh
Nach dem Login kopieren

Dockerfile ist die Konfigurationsdatei zum Erstellen des Bildes und der Inhalt lautet wie folgt:

FROM nginx LABEL maintainer="xxx" email="" app="nginx test" version="v1.0" ENV WEBDIR="/data/web/html" RUN mkdir -p ${WEBDIR} EXPOSE 5180
Nach dem Login kopieren

Geben 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 .
Nach dem Login kopieren

Das kompilierte Image-Tag ist test-v1. Sie können das lokale Image anzeigen:

docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx test-v1 d2a0eaea3fac 56 minutes ago 141MB nginx latest 605c77e624dd 9 days ago 141MB
Nach dem Login kopieren

Sie 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:

   系统时间  
Nach dem Login kopieren

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; }
Nach dem Login kopieren

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ührungsmodus

Der 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-v1
Nach dem Login kopieren

Sie 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-v1
Nach dem Login kopieren

Detaillierte Zuordnung anzeigen:

docker inspect nginx-v1
Nach dem Login kopieren

zeigt 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.log
Nach dem Login kopieren

Container stoppen:

docker stop nginx-v1
Nach dem Login kopieren

Container löschen:

docker rm nginx-v1
Nach dem Login kopieren

Docker-Compose-Modus

Docker-Compose installieren

apt-get install docker-compose
Nach dem Login kopieren

Docker-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: always
Nach dem Login kopieren

container_name: Geben Sie den Containernamen an

Bild: zur Verwendung Spiegelung und entsprechende Tags

Ports: Host-Port- und Container-Port-Zuordnung

Volumes: Externe Speicher-Mount-Zuordnung

Starten Sie den Container

docker-compose up -d Creating network "nginxtest_default" with the default driver Creating mynginx ... Creating mynginx ... done
Nach dem Login kopieren

Sehen 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 mynginx
Nach dem Login kopieren

Sie 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_default
Nach dem Login kopieren
Wie 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!

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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!