Heim  >  Artikel  >  Datenbank  >  So verwenden Sie Dockercompose zum Erstellen der Springboot-MySQL-Nginx-Anwendung

So verwenden Sie Dockercompose zum Erstellen der Springboot-MySQL-Nginx-Anwendung

PHPz
PHPznach vorne
2023-05-28 08:58:051175Durchsuche

Die Verwendung von Docker zum Erstellen einer Spring-Boot-Anwendung besteht darin, das kompilierte JAR-Paket in das Image zu integrieren.

Dieser Artikel führt Spring-Boot zusammen mit der Datenbank als eine Reihe von Docker-Diensten aus.

Hier zeichne ich nur meine Vorgänge auf. Den vollständigen laufenden Code finden Sie im Inhalt in Zitat 1 unter „Referenz“.
(Meine Methode zum Ändern des MySQL-Zuordnungsverzeichnisses und zum Abrufen der Remote-IP)

Hauptschritte:

  • Erstellen Sie eine einfache Springboot-Anwendung.

  • Fügen Sie der Anwendung Docker-Unterstützung hinzu.

  • Dockercompose-Konfigurationsdatei schreiben

  • Übungslauf
zum Erstellen einer einfachen Springboot-Anwendung


zum Erstellen einer Webanwendung und Zählen der Anzahl der IP-Besuche auf der Website.


Und speichern Sie es in der MySQL-Datenbank. Hier wird JPA verwendet, um auf die Datenbank zuzugreifen.

Abhängigkeiten

<parent>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-parent</artifactid>
  <version>2.0.0.release</version>
</parent>

Web-, JPA-, MySQL-, Tset-Bibliotheksabhängigkeiten

<dependencies>
  <dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-web</artifactid>
  </dependency>
  <dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-data-jpa</artifactid>
  </dependency>
  <dependency>
    <groupid>mysql</groupid>
    <artifactid>mysql-connector-java</artifactid>
  </dependency>
  <dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-test</artifactid>
    <scope>test</scope>
  </dependency>
</dependencies>

Konfigurationsdatei

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=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
public class visitorcontroller{
 @autowired
 private visitorrepository repository;
 @requestmapping("/")
 public string index(httpservletrequest request)
 {
 string ip= request.getheader("x-real-ip");
 if(ip== null || "".equals(ip))
 {
  ip = request.getremoteaddr();
 }
 visitor visitor = repository.findbyip(ip);
 if(visitor == null)
 {
  visitor = new visitor();
  visitor.setip(ip);
  visitor.settimes(1l);
 }
 else
 {
  visitor.settimes(visitor.gettimes()+1);
 }
 repository.save(visitor);
 return "ip:"+visitor.getip()+" "+visitor.gettimes()+" times.";
 }
}

Entitätsklasse

@entity
public class visitor {
 @id
 @generatedvalue
 private long id;
 @column(nullable=false)
 private long times;
 @column(nullable=false)
 private string ip;
 // get,set 方法略
}

Repository-Layer-Code beziehen sich auf JPA-bezogene Inhalte.

Die lokale Datenbank wird geöffnet und das Passwort ist das in der obigen Konfiguration. Nachdem Sie es mit mvn spring-boot:run ausgeführt haben, können Sie die Anzahl der IPs sehen, die sich mit jeder Zählung erhöhen.

Dockercompose-Konfigurationsdatei


Erstellen Sie eine neue Docker-Compose.yaml-Datei wie folgt:

version: &#39;3&#39;
services:
 nginx:
  container_name: v-nginx
  image: nginx:1.13
  restart: always
  ports:
  - 80:80
  - 443:443
  volumes:
  - ./nginx/conf.d:/etc/nginx/conf.d
 mysql:
  container_name: v-mysql
  image: mysql/mysql-server:5.7
  environment:
  mysql_database: test
  mysql_root_password: root
  mysql_root_host: &#39;%&#39;
  ports:
  - "3306:3306"
  volumes:
  - ./mysqldata:/var/lib/mysql
  restart: always
  
 app:
  restart: always
  build: ./app
  working_dir: /app
  volumes:
   - ./app:/app
   - ~/.m2:/root/.m2
  expose:
   - "8080"
  depends_on:
   - nginx
   - mysql
  command: mvn clean spring-boot:run -dspring-boot.run.profiles=docker

Erläutern Sie hauptsächlich diese Konfigurationsdatei und fügen Sie dem Dateisystem zugehörige Konfigurationen hinzu.

Unter „Dienste“ gibt es drei Dienste: Nginx, MySQL und App.

images gibt die Verwendung von Bildern an. Nginx und MySQL werden direkt aus dem Docker Warehouse übernommen.

Das Image wird nicht in der App angegeben, aber das Verzeichnis, in dem sich die Docker-Datei befindet, wird mit Build angegeben.
volumes gibt die Zuordnung zwischen Dateien im lokalen Verzeichnis und der Container-Zieladresse an.
Umgebung konfiguriert die vom Container benötigten Umgebungsvariablen.
Ports konfiguriert den Zuordnungsport zwischen dem lokalen und dem Container, wobei der lokale Port vorne und der Container-Port hinten liegt.

Die Rolle der Volume-Konfiguration unter ngixn: Legen Sie die Nginx-Konfiguration fest Die von uns direkt geschriebene Datei überschreibt die Standard-Nginx-Konfigurationsdatei im Container.


Die Rolle der Volume-Konfiguration unter MySQL: Zuordnung der MySQL-Datendateien zum lokalen MySQLData-Verzeichnis. Wenn der Container gelöscht wird, sind die Daten noch vorhanden.


Die Rolle der Volume-Konfiguration unter der App: Die erste Zeile besteht darin, die Codedatei dem Container zuzuordnen. Die zweite Zeile besteht darin, die Maven-Warehouse-Datei der lokalen Datei zuzuordnen. Nachdem Sie den Container gelöscht haben, erstellen Sie ihn erneut, ohne die Abhängigkeitspakete erneut herunterzuladen.

Befehl: mvn clean spring-boot:run -dspring-boot.run.profiles=docker Der

command: mvn clean spring-boot:run -dspring-boot.run.profiles=docker

命令是编译运行容器中的项目,使用docker的profiles。

所以我们要添加的文件

  • dockerfile:新建文件,添加一行from maven:3.5-jdk-8

  • docker的profiles:复制application.properties为application-docker.properties,并把application-docker.properties中数据库连接地址改为jdbc:mysql://mysql:3306/test。

  • nginx的配置文件

server {
  listen 80;
  charset utf-8;
  access_log off;
  location / {
    proxy_pass http://app:8080;
    proxy_set_header host $host:$server_port;
    proxy_set_header x-forwarded-host $server_name;
    proxy_set_header x-real-ip $remote_addr;
    proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
  }
  location /static {
    access_log  off;
    expires   30d;
    alias /app/static;
  }
}

部署验证

把整体的文件拷贝到服务器上,使用docker-compose up Befehl dient zum Kompilieren und Ausführen des Projekts im Container mithilfe von Docker-Profilen.

🎜Also die Dateien, die wir hinzufügen möchten🎜🎜🎜🎜Docker-Datei: Erstellen Sie eine neue Datei, fügen Sie eine Zeile aus maven:3.5-jdk-8 hinzu.🎜🎜🎜🎜Docker-Profile: Kopieren Sie application.properties nach application-docker.properties und put application – Die Datenbankverbindungsadresse in docker.properties wird in jdbc:mysql://mysql:3306/test geändert. 🎜🎜🎜🎜nginx-Konfigurationsdatei🎜🎜🎜rrreee🎜🎜Bereitstellungsüberprüfung🎜🎜🎜🎜Kopieren Sie die gesamte Datei auf den Server und verwenden Sie docker-compose up zum Ausführen. 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Dockercompose zum Erstellen der Springboot-MySQL-Nginx-Anwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen