Was Docker-Anfänger vor dem Einrichten der Nginx-Lernumgebung getan haben

Was in diesem Artikel zu schreiben

Als Front-End-Ingenieur dachte ich, ich sollte nicht nur das Codieren, sondern auch die Webserver verstehen, deshalb wollte ich lernen, während ich mit Nginx spiele. Ich zögerte jedoch, einen Webserver auf meinem Mac-Computer zu installieren und die Einstellungen zu ändern, und entschied mich daher, diese Gelegenheit zu nutzen, um mit Docker zu beginnen. Während ich die Grundlagen von Docker lerne, zeichne ich auf, was ich beim Erstellen der Lernumgebung für Nginx getan habe.

Registrieren Sie sich auf der offiziellen Website Docker Download

Laden Sie Docker Desktop von [Docker Official Get Started] 3 herunter und installieren Sie es. Es gibt nichts besonders Schwieriges.

Docker-Tutorial durchgeführt

Als ich den heruntergeladenen Docker startete, wurde der Tutorial-Bildschirm gestartet. Docker_tutorial.png

Sie können sogar das Tutorial-Repository klonen, ein Docker-Image erstellen und es auf dem Docker-Hub freigeben. Wenn Sie die blaue Taste mit dem Befehl drücken, wird sie auf der Konsole auf der rechten Seite des Bildschirms ausgeführt. Wenn ich darauf drücke, ohne es zu wissen, habe ich begonnen, das Repository in das Home-Verzeichnis zu klonen. Ich muss es später bereinigen.

Der Vorgang dauert weniger als 5 Minuten. Lesen Sie eine kleine Erklärung und drücken Sie die Taste viermal. Über Docker ist jedoch noch wenig bekannt.

Docker lesen / Erste Schritte

Als ich dachte, das Tutorial sei vorbei, war der Container selbst ein Dokument. Der Docker-Tutorial-Container wird ausgeführt und kann unter http: // localhost aufgerufen werden.

Ich werde es lesen, weil es auf verschiedene Arten geschrieben ist スクリーンショット 2020-08-24 13.25.51.png

Ich fand es etwas problematisch, weil es eine bestimmte Menge Text gab, aber es enthält ziemlich nützliche Informationen. Es gibt auch Elemente, die absichtlich einen Fehler erzeugen und Ihnen erklären, wie Sie damit umgehen sollen. Außerdem erfahren Sie, wie Sie Probleme lösen, in die Anfänger häufig geraten. Lesen Sie sie daher von Anfang an ohne Probleme.

Was Sie aus den ersten Schritten lernen können

Ich habe alles richtig gelesen und zwei Tage frei verbracht, aber es hat sich gelohnt, es zu lesen. Wir empfehlen, dass Sie es nicht nur lesen, sondern fortfahren, während Sie den Befehl tatsächlich ausführen.

Erstellen Sie tatsächlich eine Nginx-Lernumgebung

Nachdem wir die ersten Schritte abgeschlossen haben, können wir loslegen.

Löschen Sie das Bild von Nginx

Laden Sie das Bild von [nginx] 1 von Docker Hub herunter Am unteren Rand der Nginx-Bildseite befindet sich ein Schnellstartbefehl. Da der Teil / some / content zum sogenannten hthome wird, erstellen Sie ein geeignetes Verzeichnis und ersetzen Sie / some / content durch diesen zu testenden Pfad. Führen Sie den folgenden Befehl mit der Option -p aus und fügen Sie 8080: 80 hinzu, um ihn dem Port des Hostcomputers zuzuordnen.

docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -dp 8080:80 nginx

Wenn ich den Browser starte und auf http: // localhost: 8080 zugreife, wird 403 Verboten, aber ich kann bestätigen, dass nginx erfolgreich gestartet werden kann. 403 wird später gelöst.

Starten Sie von Docker-Compose

Es ist schwierig, jedes Mal einen langen Befehl wie den oben genannten einzugeben, und in Zukunft möchte ich eine Verknüpfung mit anderen Containern herstellen, damit ich von Docker-Compose aus starten kann. Erstellen Sie ein PJ-Verzeichnis mit der folgenden Struktur

ProjectRoot/ ┣ docker-compose.yml ┗ static-html-directory/

Schreiben Sie docker-compose.yml und merken Sie sich den Inhalt von Erste Schritte.

version: "1.0"

services:
  nginx:
    image: nginx
    ports: 
      - "8080:80"
    volumes:
      - ./static-html-directory:/usr/share/nginx/html

Wenn Sie dann auf Docker-Compose klicken, tritt der folgende Fehler auf

ERROR: Version "1.0" in "./docker-compose.yml" is invalid.

Ich dachte, dass die Version die Version meines Systems ist und setzte sie auf 1.0, aber als ich mich daran erinnerte, dass es sich beim Start um die Schemaversion von Docker-Compose handelte und die Version auf 3.8 umschrieb, wurde der Start erfolgreich abgeschlossen.

Wenn ich den Browser starte und auf http: // localhost: 8080 zugreife, wird er erneut zu 403 Forbidden, und der folgende Fehler wird auf der Konsole angezeigt.

nginx_1  | 2020/08/27 06:59:58 [error] 23#23: *5 directory index of "/usr/share/nginx/html/" is forbidden, client: 172.20.0.1, server: localhost, request: "GET / HTTP/1.1", host: "localhost:8080"

Da / usr / share / nginx der Bereich ist, der an ./static-html-directory gebunden ist, überprüfen Sie die Berechtigungen des Verzeichnisses static-html-directory.

kontam> ls -l
total 16
-rw-r--r--  1 kontam  staff  150  8 27 16:48 docker-compose.yml
drwxr-xr-x  3 kontam  staff   96  8 27 15:56 static-html-directory

Alle Benutzer haben Leseberechtigung, daher scheint es kein Problem zu geben. Ich dachte, ich habe die folgende Datei test.html benannt und im Verzeichnis static-html-directory gespeichert.

<html>
  <body>
    <h1>kontam added this</h1>
  </body>
</html>

Wenn ich danach mit einem Browser auf http: //localhost:8080/test.html zugreife, wird der HTML-Code erfolgreich zurückgegeben und "kontam add this" angezeigt. Da sich im Verzeichnis static-html-index keine index.html befand, wird beim Zugriff auf das Stammverzeichnis die Dateiliste angezeigt. Es scheint jedoch 403 zu sein, da die Liste standardmäßig deaktiviert ist.

Stellen Sie eine Verbindung zum Nginx-Container her und üben Sie das Ändern von Einstellungen

Ich habe beschlossen, die Einstellung zu ändern, damit diese Dateiliste angezeigt wird, um Nginx zu lernen. Aufgrund von Google lautet die Grundeinstellungsdatei von nginx /etc/nginx/nginx.conf. Öffnen wir die Einstellungsdatei sofort mit vim.

root@d46b1cf2dadf:/etc/nginx# vim /etc/nginx/nginx.conf
bash: vim: command not found

Es gibt kein vim ...? Wenn Sie es nicht haben, haben Sie keine andere Wahl, als es einzulegen. Ich habe herausgefunden, dass es sich um ein Debian-System mit debian_version unter / etc handelt. Installieren Sie es also mit apt-get.

apt-get update
apt-get install vim

Sie können Vim jetzt sicher verwenden.

Ändern Sie die Einstellungen in der Datei nginx.conf

Informationen zur Einstellung von Autoindex, einer Dateiliste, finden Sie unter [offizielles Nginx-Dokument] 4. Geben Sie im Positionsblock der Einstellungsdatei an, dass nginx die Dateiliste anzeigen soll. Als ich nginx.conf mit vim öffnete, gab es eine solche Beschreibung im http-Block.

http {
    ...
    include /etc/nginx/conf.d/*.conf;
}

Enthält andere conf-Dateien. Ist der Server dort nicht blockiert? Ich werde versuchen, es zu finden. Unter /etc/nginx/conf.d befindet sich eine Einstellungsdatei mit dem Namen default.conf. Öffnen Sie sie daher. Dann wurde, wie ich erwartet hatte, der gesamte Serverblock hier geschrieben, und die Pfadspezifikation von hthome wurde ebenfalls geschrieben. Fügen Sie hier die folgende Zeile hinzu

autoindex on;

Dadurch wird der Nginx-Container neu gestartet

docker-compose down
docker-compose up

Als ich erneut versuchte, auf http: // localhost: 3000 zuzugreifen, wurde die Dateiliste wie erwartet angezeigt. スクリーンショット 2020-08-27 18.06.58.png

Man kann sagen, dass die Lernumgebung so eingerichtet wurde, dass Sie die Änderungen sicher überprüfen können, während Sie mit den Nginx-Einstellungen spielen.

Verwalten Sie Konfigurationsdateien außerhalb des Containers mit Bind Mounts

Die Lernumgebung für Nginx wurde erstellt. Wenn Sie jedoch nur die Einstellungsdatei im Container neu schreiben, werden alle Einstellungen zurückgegeben, wenn Sie den Container neu erstellen. Es ist praktisch, verfügbar zu sein, wenn Sie mit der Absicht lernen, es zu zerbrechen. In der Praxis, z. B. beim Aufbau eines Systems, kann jedoch die gesamte Arbeit bis zu diesem Zeitpunkt verloren gehen und es ist schwierig, Git zu verwalten. Ich denke, die Konfigurationsdatei sollte auf dem Dateisystem des Host-Computers verwaltbar sein.

Ich habe ein Nginx-Verzeichnis zum Speichern der Nginx-Konfigurationsdateien erstellt und eine Kopie jeder Konfigurationsdatei darin gespeichert. Das PJ-Verzeichnis hat die folgende Struktur.

ProjectRoot/ ┣ docker-compose.yml ┣ static-html-directory/  ┗ test.html ┗ nginx/  ┣ nginx.conf  ┗ conf.d/   ┗ default.conf

Wenn Sie dieses Nginx-Verzeichnis als Volume angeben, können die geänderten Einstellungen auch dann beibehalten werden, wenn der Container neu erstellt wird. Fügen Sie den Volumes-Teil von docker-compose.yml hinzu.

version: "3.8"

services:
  nginx:
    image: nginx
    ports: 
      - "8080:80"
    volumes:
      - ./static-html-directory:/usr/share/nginx/html
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf

Da es sich um die Conf des Host-Computers handelt, ist dies einfach, da Sie nicht jedes Mal, wenn Sie die Einstellungen ändern, eine Verbindung zum Docker-Container herstellen müssen. Danach können Sie weiter lernen, während Sie die Einstellungen nach Belieben ändern oder aufheben.

Zusammenfassung

--Docker-Anfängern wird empfohlen, zuerst [Docker / Erste Schritte] 1 zu machen

das ist alles. Wenn Sie Fehler oder Verbesserungspunkte haben, kommentieren Sie diese bitte.

Recommended Posts

Was Docker-Anfänger vor dem Einrichten der Nginx-Lernumgebung getan haben
Was Anfänger in der Android-Entwicklung vor der Veröffentlichung der App in 2 Wochen getan haben
Docker-Umgebung Nuxt-Axios-Modul zum Festlegen von baseURL
Was ich getan habe, als die DB nicht mit Docker-Compose gestartet wurde
Richten Sie eine Wordpress Docker-Umgebung ein, ohne das Worpdress-Image zu verwenden
Umgebungsbau mit Docker für Anfänger