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
Heute listet dieser Beitrag einige großartige Beis...
Inhaltsverzeichnis 1. Einleitung 2. Erster Eindru...
border-radius:10px; /* Alle Ecken sind mit einem ...
Was ist das? Spring Boot ist ein Unterprojekt der...
Zeigen Sie die IP-Adresse des Containers an docke...
1. HTML-Code Code kopieren Der Code lautet wie fo...
Wenn wir jedoch das Element <img> mit der S...
Ich bin heute auf mehrere Browserkompatibilitätsp...
Hintergrund: Da der Server das Flask-Projekt bere...
Vorwort In einem aktuellen Projekt mussten wir ei...
Hier ist ein einzeiliges Layout mit ul>li für ...
Vor kurzem hat das Unternehmen zufällig Live-Über...
Der erste Artikel zum Thema Datensicherung und -w...
In diesem Artikel wird das grafische Tutorial zur...
Aus historischen Gründen basiert die MySQL-Replik...