Maison > base de données > tutoriel mysql > Comment utiliser dockercompose pour créer l'application springboot-mysql-nginx

Comment utiliser dockercompose pour créer l'application springboot-mysql-nginx

PHPz
Libérer: 2023-05-28 08:58:05
avant
1228 Les gens l'ont consulté

Utiliser Docker pour créer une application Spring-boot consiste à créer le package jar compilé dans l'image.

Cet article exécute spring-boot avec la base de données en tant qu'ensemble de services Docker.

Ici, j'enregistre simplement mes propres opérations. Pour le code complet en cours d'exécution, voir le contenu de la citation 1 dans "Référence".
(Comment modifier le répertoire de mappage mysql et obtenir l'adresse IP distante)

Étapes principales :

  • Créer une application Springboot simple # 🎜🎜#

  • Ajouter le support Docker à l'application

  • Écrire le fichier de configuration Dockercompose

    #🎜 🎜#
  • Pratiquer l'opération
Créer une application Springboot simple

#🎜🎜 #Do Une application web qui compte le nombre de visites IP sur le site.

et stocké dans la base de données mysql, ici nous utilisons jpa pour accéder à la base de données.

dépendance

<parent>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-starter-parent</artifactid>
  <version>2.0.0.release</version>
</parent>
Copier après la connexion

dépendances de la bibliothèque web, jpa, mysql, tset

<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>
Copier après la connexion

fichier de configuration

#🎜🎜 #

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
Copier après la connexion

Core code


@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.";
 }
}
Copier après la connexion

Entity class

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

repository layer code fait référence au contenu lié au jpa.

La base de données locale est ouverte et le mot de passe est celui configuré ci-dessus Après l'avoir exécuté en utilisant mvn spring-boot:run, vous pouvez voir le nombre d'IP, qui augmentera à chaque fois qu'il sera compté. .

fichier de configuration dockercompose

Créez un nouveau fichier docker-compose.yaml comme suit :

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
Copier après la connexion
#🎜 🎜# Expliquez principalement ce fichier de configuration et ajoutez les configurations associées au système de fichiers.

services Il existe trois services sous nginx, mysql, app.

images Indique l'utilisation d'images. nginx et mysql sont directement extraits de l'entrepôt Docker.

L'application ne spécifie pas l'image, mais utilise build pour spécifier le répertoire où se trouve le fichier docker.

volumes spécifie le mappage entre les fichiers du répertoire local et l'adresse cible du conteneur.

environment configure les variables d'environnement requises par le conteneur

ports configure le port de mappage entre le local et le conteneur, avec le port local devant et le port conteneur à l'arrière

Configuration des volumes sous ngixn Fonction : écrasez directement le fichier de configuration nginx que nous avons écrit dans le fichier de configuration nginx par défaut dans le conteneur.


Le rôle de la configuration des volumes sous mysql : mapper les fichiers de données mysql vers le répertoire local mysqldata. Lorsque le conteneur est supprimé, les données sont toujours là.


Le rôle de la configuration des volumes sous app : La première ligne est de mapper le fichier de code sur le conteneur. La deuxième ligne consiste à mapper le fichier d'entrepôt Maven au fichier local. Après avoir supprimé le conteneur, reconstruisez-le sans retélécharger les packages de dépendances.

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

La commande est de compiler et exécuter des projets dans des conteneurs utilisent des profils Docker.

Donc le fichier que nous voulons ajoutercommand: 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;
  }
}
Copier après la connexion

部署验证

把整体的文件拷贝到服务器上,使用docker-compose up

#🎜🎜##🎜🎜#dockerfile : Créez un nouveau fichier et ajoutez une ligne de maven:3.5-jdk-8# 🎜🎜## 🎜🎜##🎜🎜##🎜🎜#docker profiles : copiez application.properties dans application-docker.properties et modifiez l'adresse de connexion à la base de données dans application-docker.properties en jdbc:mysql://mysql : 3306/essai . #🎜🎜##🎜🎜##🎜🎜##🎜🎜#fichier de configuration nginx#🎜🎜##🎜🎜##🎜🎜#rrreee#🎜🎜##🎜🎜#Vérification du déploiement#🎜🎜##🎜 🎜 # #🎜🎜##🎜🎜#Copiez l'intégralité du fichier sur le serveur et utilisez docker-compose up pour l'exécuter. #🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal