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
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>
<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
@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."; } }
@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: '3' 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: '%' 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.
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!