Im vorherigen Artikel haben wir Docker verwendet, um eine Spring-Boot-Anwendung zu erstellen, die das kompilierte JAR-Paket in das Image eingebaut hat. Dieser Artikel führt Spring-Boot zusammen mit der Datenbank als eine Reihe von Docker-Diensten aus. Hier zeichne ich nur meine eigenen Vorgänge auf. Den kompletten laufenden Code finden Sie im Inhalt von Referenz 1 unter „Referenz“. Hauptschritte:
Erstellen Sie eine einfache Springboot-Anwendung Erstellen Sie eine Webanwendung, um die Anzahl der IP-Adressen zu zählen, die die Site besuchen. Und speichern Sie es in einer MySQL-Datenbank. Hier verwenden wir JPA, um auf die Datenbank zuzugreifen. verlassen <übergeordnetes Element> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> </übergeordnet> Abhängigkeiten von Web-, JPA-, MySQL- und Tset-Bibliotheken <Abhängigkeiten> <Abhängigkeit> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </Abhängigkeit> <Abhängigkeit> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </Abhängigkeit> <Abhängigkeit> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </Abhängigkeit> <Abhängigkeit> <groupId>org.springframework.boot</groupId> <artifactId>Spring-Boot-Starter-Test</artifactId> <scope>Test</scope> </Abhängigkeit> </Abhängigkeiten> Konfigurationsdateien spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.Benutzername=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.properties.hibernate.hbm2ddl.auto=update spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.show-sql=true Kerncode @RestController öffentliche Klasse VisitorController { @Autowired privates VisitorRepository-Repository; @RequestMapping("/") öffentlicher String-Index (HttpServletRequest-Anforderung) { String-IP = Anfrage.getHeader("X-Real-IP"); wenn(ip== null || "".equals(ip)) { ip = request.getRemoteAddr(); } Besucher Besucher = repository.findByIp(ip); wenn(Besucher == null) { Besucher = neuer Besucher(); Besucher.setIp(ip); Besucher.setTimes(1L); } anders { Besucher.setTimes(Besucher.getTimes()+1); } repository.save(Besucher); returniere "ip:"+visitor.getIp()+" "+visitor.getTimes()+" mal."; } } Entitätsklasse @Juristische Person öffentliche Klasse Besucher { @Ausweis @GenerierterWert private lange ID; @Spalte(nullfähig=falsch) privat Lange Zeiten; @Spalte(nullfähig=falsch) private String-IP; // get, set Methoden ausgelassen} Der Repository-Layer-Code bezieht sich auf JPA-bezogenen Inhalt. Die lokale Datenbank wird geöffnet und das Passwort wie oben konfiguriert. Nach dem Ausführen mit mvn spring-boot:run wird die Anzahl der IPs angezeigt, die nach jeder Statistik automatisch erhöht wird. Docker Compose-Konfigurationsdatei Erstellen Sie wie folgt eine neue Datei docker-compose.yaml: Version: '3' Leistungen: nginx: Containername: v-nginx Bild: nginx:1.13 Neustart: immer Häfen: - 80:80 -443:443 Bände: - ./nginx/conf.d:/etc/nginx/conf.d MySQL: Containername: v-mysql Bild:mysql/mysql-server:5.7 Umfeld: MYSQL_DATABASE: Test MYSQL_ROOT_PASSWORD: root MYSQL_ROOT_HOST: '%' Häfen: - „3306:3306“ Bände: - ./mysqldata:/var/lib/mysql Neustart: immer App: Neustart: immer Erstellen: ./app Arbeitsverzeichnis: /app Bände: - ./app:/app - ~/.m2:/root/.m2 exponieren: - "8080" hängt ab von: - nginx -mysql Befehl: mvn clean spring-boot:run -Dspring-boot.run.profiles=docker Erklären Sie hauptsächlich diese Konfigurationsdatei und fügen Sie die zugehörige Konfiguration im Dateisystem hinzu. Unter „Dienste“ gibt es drei Dienste: nginx, mysql und app. Der Zweck der Volume-Konfiguration unter nginx besteht darin, die von uns geschriebene nginx-Konfigurationsdatei direkt in die Standard-nginx-Konfigurationsdatei im Container zu überschreiben. Der Zweck der Volume-Konfiguration unter MySQL besteht darin, die MySQL-Datendateien dem lokalen mysqldata-Verzeichnis zuzuordnen. Beim Löschen des Containers bleiben die Daten erhalten. Die Funktion der Volumes-Konfiguration unter App: Die erste Zeile ordnet die Codedatei dem Container zu. Die zweite Zeile ordnet die Maven-Repository-Datei der lokalen Datei zu. Nach dem Löschen des Containers können Sie ihn erneut erstellen, ohne abhängige Pakete erneut herunterzuladen. Der Befehl dient zum Kompilieren und Ausführen des Projekts im Container unter Verwendung von Docker-Profilen. Wir müssen also die Datei hinzufügen
Server { hören Sie 80; Zeichensatz UTF-8; Zugriff_Abmeldung; Standort / { Proxy-Passwort http://app:8080; Proxy_set_header Host $host:$server_port; Proxy_set_header X-Weitergeleiteter Host $server_name; Proxy_Set_Header X-Real-IP $Remote_Addr; proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; } Standort /static { Zugriff_Abmeldung; läuft in 30 Tagen ab; Alias /app/static; } } Validierung der Bereitstellung Kopieren Sie die gesamte Datei auf den Server und führen Sie sie mit Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: js implementiert das Popup-Anmeldefeld durch Klicken auf das Popup-Fenster
>>: Gründe und Lösungen für das Fehlschlagen der Erstellung von Fremdschlüsseln durch MySQL
Das Tutorial zur Installation von OpenStack Ussur...
Vor Kurzem habe ich mit der Aktualisierung meines ...
1. Statistiken zu PV und IP Zählen Sie die PV (Pa...
Dieser Artikel erläutert anhand von Beispielen da...
Der Befehl fd bietet eine einfache und unkomplizi...
Hintergrund: Hoch- und Herunterladen von Dateien ...
Inhaltsverzeichnis 1. Installieren Sie VMware 1.1...
Dieser Artikel enthält das grafische Tutorial zur...
Vor kurzem habe ich einen solchen Effekt implemen...
In diesem Artikelbeispiel wird der spezifische Co...
Problembeschreibung: In letzter Zeit besteht die ...
So zeigen Sie Versionsinformationen unter Linux a...
Grammatik: Hintergrundbild: Kegelschnitt-Farbverl...
Durchführung von Transaktionen Das Redo-Protokoll...
Azure Container Registry ist ein verwalteter, ded...