1. Die Schmerzpunkte, die gelöst werden müssen
1. Es ist nicht erforderlich, eine Back-End-Entwicklungsumgebung aufzubauen.
2. Veränderungen in der Entwicklungsumgebung müssen nur den Spiegel in synchrone Updates ändern.
3.. Keine Notwendigkeit für IDE -Tools wie Sonnenfinsternis.
4. Projekte für Wechselentwicklungsprojekte
2. Lösungen
Verwenden Sie Docker, um Ubuntu-Bilder zu starten, die vom Projekt geforderte Entwicklungsumgebung im Container zu erstellen, den lokalen Code in den Container zu montieren, den Mount-Volumen zu kompilieren und den Code mithilfe der Umgebung im Container auszuführen, und der Host zugreift auf die Dienste im Container über den von Docker aufgedeckten Port.
3. Über Docker
Verstehe Docker
Dieser Artikel beabsichtigt nicht, das Wissen von Docker im Detail zu erklären. Es gibt viele verwandte Artikel. Wenn Sie interessiert sind, können Sie dieses Buch lesen. Ich beschränkt mich auf die Entwicklung dieses Tools für die Verwendung von Docker. Wenn es etwas falsch ist, weisen Sie bitte darauf hin.
Beschleuniger
Daocloud Accelerator
4. Bauen Sie eine Umgebung auf
Nachdem wir Docker heruntergeladen und installiert haben, können wir beginnen. Was wir unten sprechen, ist Java, aber dasselbe gilt für andere Umgebungen.
Holen Sie sich Ubuntu Bild.
Docker ziehen Ubuntu
Führen Sie nach dem Abschluss docker images aus und Sie sehen ein neu aktualisiertes Bild.
Geben Sie den Container ein
Docker Run -it Ubuntu
5. Software installieren und Umgebungsvariablen konfigurieren
Erstes Update APT-Get
APT-Get-Update
Als nächstes können Sie apt-get install * verwenden, um die von Ihnen benötigte Software zu installieren. Wenn nicht, laden Sie das Installationspaket herunter und installieren Sie es selbst. Konfigurieren Sie gleichzeitig die Umgebungsvariablen. Ich werde hier nicht auf Details eingehen.
Vi. Starten Sie den Service
Geben Sie das Tomcat -Verzeichnis ein, starten Sie den Dienst und öffnen Sie den Browser 0.0.0.0:8080. Wenn nichts falsch ist, werden Sie feststellen, dass auf den Server nicht zugegriffen werden kann. Dies liegt daran, dass der Service, den wir gerade begonnen haben, in Docker ist. Wenn wir keine Operationen ausführen, können wir in Docker nicht auf den Service zugreifen.
Lassen Sie uns zuerst den Behälter verlassen
Ausfahrt
Führen Sie nach dem Verlassen docker ps -a aus und Sie können sehen, dass der Container, den wir gerade jetzt haben, noch da ist. Die meisten Menschen, die neu in Docker sind, werden diesen Fehler machen und denken, dass der Container nach dem Verlassen des Containers zerstört wird, aber tatsächlich ist es nicht der Fall.
Wenn wir diesen Container erneut eingeben möchten, können wir den folgenden Befehl ausführen. Kopieren Sie bitte Ihre eigene Container -ID.
Docker Exec -it Container -ID -Bash
Obwohl der Behälter noch läuft, ist er nicht bestehen. Um zu verhindern, dass dies geschieht, wird es so bald wie möglich bestehen, nachdem wir den Inhalt im Container geändert haben.
Docker Commit Container -ID Java
Dieser Befehl bedeutet, unseren Container in ein neues Bild mit dem Namen Java zu verwandeln.
Starten Sie dieses neu erstellte Bild.
Docker Run -it -p 8080: 8080 Java
Achten Sie auf die Änderung unseres Startbefehls, und es gibt einen zusätzlichen -P -Befehl. Dieser Befehl bedeutet, den 8080 -Port im Container dem Host auszusetzen.
Besuchen Sie 0.0.0.0:8080 und wir können die kleine Katze sehen, es ist so süß.
Was soll ich tun, wenn der Container gerade noch unser Gedächtnis besetzte? Töte ihn.
Docker RM Container -ID
Unser erster Schritt wurde abgeschlossen und als nächstes werden wir unseren Code integrieren.
7. Integrierter Code
Der Container, den wir gerade gestartet haben, ist eine völlig unabhängige Black Box, die keine Ahnung hat, wo sich unser Code befindet. Daher müssen wir Dockers Mount -Volumen verwenden, damit der Host und der Container das Verzeichnis teilen können.
Tut mir leid, wir werden den Container töten, den wir gerade wieder angefangen haben.
Docker Run -it -v/Benutzer/Name/Web:/opt/root -P 8080: 8080 Java
Unser Startbefehl hat ein neues Mitglied -v hinzugefügt. Die Bedeutung dieses Befehls besteht darin, das Webverzeichnis unter das Root -Verzeichnis des Benutzers in den Container im Verzeichnis /opt /root aufzuhängen.
Nach dem Eintritt in das Verzeichnis können wir feststellen, dass die Dateien im Webverzeichnis leise im Inneren liegen, wie Mary Sue, die seit vielen Jahren schläft, auf Ihren Anruf wartet.
Fangen Sie an, anzurufen.
MVN Clean Install -Installation -Plocal -dskiptests
Nach einiger Zeit werden wir eine Aufforderung zur erfolgreichen Verpackung sehen. Kopieren Sie das Kriegspaket in das Tomcat WebApps -Verzeichnis und Sie können auf Ihr Projekt zugreifen.
Zu diesem Zeitpunkt begann unser Projekt endlich zu laufen, aber es gibt mehrere Probleme.
1. Müssen Sie jedes Mal einen so langen Befehl ausführen? Sehr problematisch.
2. Jedes Mal, wenn Sie den Code ändern, muss er neu verpackt werden, was lange dauert.
3. Wie kann man das Startprotokoll lesen? Was soll ich tun, wenn ich einen Fehler melde?
4.. Wie modifizieren Sie die Front-End-Vorlagendatei, ohne den Dienst neu zu starten?
Basierend auf diesen Problemen müssen wir ein Skript schreiben, um sie zu lösen.
8. Shell Skript
Das Skript enthält die folgenden Anweisungen
-y Update Maven Paket-Compile-Package-Release-Start-Tomcat
-P Compile-Package-Release-Start-Tomcat
-r starten Sie Tomcat neu
-C Compile Java -Datei - Release - Tomcat starten
-W hört auf VM -Dateien, Standardsynchronisation 5S einmal
-l Tomcat -Protokoll anzeigen
-h Hilfe
# Variablen, die sein müssen geändert ####################################################################################################################################################################################### zuichter ######################################################################################################################################### zuichter ####################################################################################################################################################################################### zuichter ######################################################################################################################################### zuichter ####################################################################################################################################################################################### zuichter ######################################################################################################################################### zuichter ####################################################################################################################################################################################### zuichter Projektstartadresse tom_root = "$ {tom_url}/webapps"# Dateihörungsintervall, Einheit WT = 5# vmwc_vm = "src/main/webapp/web-inf/tpl/usr/share/tomcat7/webapps/rootes/# copywc_java ="# "#"# "”# "” ””# "”# "targ /usr/share/tomcat7/webapps/root/web -inf/" # allgemeine Methode # # Verwenden Sie die neue Paketfunktion NewWar () { # Altes Paket rm -rf $ {tom_root}/* # Move War -Paket MV $ {War_url} {Tom_Root} /root. # Start the service ${TOM_URL}/bin/startup.sh # Enter the startup log tail -f ${TOM_URL}/logs/catalina.out}# Directive processing while getopts ":yprcwlh" optnamedo case "$optname" in "y") echo "Update jar package" mvn clean install -U -P${DEV} -Dskiptests Newwar Neustart ;; "P") Echo "Repackage" MVN Clean Package -p $ {dev} -dskiptests NewWar Neustart ;; "R") echo "starten Sie Tomcat neu" neu ;; "C") echo "Neukompilieren und neu starten Sie den Service" MVN Clean Compile -p $ {dev} -dskiptests cp -r $ {wc_java} neu starten ;; "W") echo "Starten Sie VM -Dateien an." "L") echo "Login" # Hören Sie VM Tail -f $ {tom_url} /logs/catalina.out ;; "h") echo " -y Update maven package-compile-package-release-start one-stop service" echo " -p Compile and package release starts one-stop service" echo " -r Restart tomcat" echo " -c Re-java file and deploy restart service" echo " -w listen to vm file, default 5S synchronization once" echo " -l View logs" echo " -h Help" ;; ESAC 9. Für das Team werben
Nach den oben genannten drei Schritten wurden unsere Werkzeuge erstellt, aber wie können andere sie verwenden?
Docker bietet Cloud -Dienste an. Wenn unser Bild klein genug ist, können wir das Bild in die Cloud bringen, damit andere heruntergeladen und ausgeführt werden können, aber unser Bild hat 1 g überschritten. . . Wir können diese Methode also nicht verwenden.
Docker rette java -o ./java.tar
Verwenden Sie den obigen Befehl, um das Bild in die lokale Datei java.tar zu bestehen, und übertragen Sie es dann auf andere Mittel auf die Maschinen anderer Klassenkameraden. Wir verwenden Airdrop, ein paar Minuten von Dingen.
Docker Load -i java.tar
Andere Schüler können diesen Befehl verwenden, um unser Bild in seinen Docker zu laden.
Integrieren Sie dann das Shell -Skript in das Projekt Root -Verzeichnis und Sie können es glücklich verwenden.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, der Inhalt dieses Artikels wird Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen.