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
Inhaltsverzeichnis Installieren Sie Docker unter ...
1. Installation Installation mit yum ##Yum nginx ...
Inhaltsverzeichnis Produktanforderungen Ideen Pro...
Vorwort Nach der Installation von MySQL und Navic...
Viele Freunde berichten von folgendem Fehler, wen...
Problembeschreibung Der Schaltflächenstil ist Sym...
Es gibt bereits viele Artikel über Slot-Scope auf...
Dieser Artikel zeichnet das Installations-Grafik-...
KILL [VERBINDUNG | ABFRAGE] Prozesslisten-ID In M...
Offizielle Website-Adresse: https://www.mysql.com...
Vorwort: Das Jahr neigt sich dem Ende zu. Ist es ...
Als Reaktion auf die Popularität von nodejs haben...
Reverse-Proxy Unter Reverse-Proxy versteht man de...
Die Verwendung von Ajax zum Implementieren der For...
Typische MySQL-Szenarien: Schnittmenge und Differ...