Rumah  >  Artikel  >  pangkalan data  >  Cara menggunakan dockercompose untuk membina aplikasi springboot-mysql-nginx

Cara menggunakan dockercompose untuk membina aplikasi springboot-mysql-nginx

PHPz
PHPzke hadapan
2023-05-28 08:58:051109semak imbas

Menggunakan docker untuk membina aplikasi spring-boot adalah untuk membina pakej jar yang disusun ke dalam imej.

Artikel ini menjalankan spring-boot bersama-sama dengan pangkalan data sebagai satu set perkhidmatan docker.

Di sini saya hanya merekodkan operasi saya Untuk kod berjalan yang lengkap, lihat kandungan dalam Petikan 1 dalam "Rujukan".
(Bagaimana saya mengubah suai direktori pemetaan mysql dan mendapatkan IP jauh)

Langkah utama:

  • Membina aplikasi springboot ringkas

  • Aplikasi menambah sokongan di bawah docker

  • Tulis fail konfigurasi dockercompose

  • Berlatih menjalankan

Bina aplikasi springboot ringkas

Buat aplikasi web dan kira bilangan alamat IP yang melawati tapak.

dan disimpan dalam pangkalan data mysql, di mana jpa digunakan untuk mengakses pangkalan data.

Pergantungan

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

Pergantungan perpustakaan 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>

Fail konfigurasi

rreee

Kod teras >

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

Kelas entiti

@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.";
 }
}

Kod lapisan repositori merujuk kepada kandungan berkaitan jpa.

Pangkalan data tempatan dibuka, dan kata laluan ialah kata laluan dalam konfigurasi di atas Selepas menjalankannya menggunakan mvn spring-boot:run, anda boleh melihat bilangan IP, yang akan meningkat selepas setiap statistik.

fail konfigurasi dockercompose

Buat fail docker-compose.yaml baharu, seperti berikut:

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

Terutamanya menerangkan fail konfigurasi ini, dan Tambah konfigurasi yang berkaitan pada sistem fail.

Terdapat tiga perkhidmatan di bawah perkhidmatan nginx, mysql, app.

imej menentukan penggunaan imej. nginx dan mysql diambil terus dari gudang docker.
Imej tidak dinyatakan dalam apl, tetapi direktori tempat fail docker terletak ditentukan dengan binaan.
volum menentukan pemetaan antara fail dalam direktori tempatan dan alamat sasaran kontena.
persekitaran mengkonfigurasi pembolehubah persekitaran yang diperlukan oleh bekas
port mengkonfigurasi port pemetaan antara tempatan dan bekas, dengan port tempatan di hadapan dan port kontena di belakang

Peranan volum konfigurasi di bawah ngixn: Fail konfigurasi nginx yang kami tulis terus menimpa fail konfigurasi nginx lalai dalam bekas.


Peranan konfigurasi volum di bawah mysql: memetakan fail data mysql ke direktori mysqldata tempatan. Apabila bekas dipadamkan, data masih ada.


Peranan konfigurasi volum di bawah apl: Baris pertama adalah untuk memetakan fail kod ke bekas. Baris kedua adalah untuk memetakan fail gudang maven ke tempatan. Selepas memadamkan bekas, bina semula tanpa memuat turun semula pakej kebergantungan. Perintah

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

ialah untuk menyusun dan menjalankan projek dalam bekas, menggunakan profil docker.

Jadi fail yang ingin kita tambahkan

  • dockerfile: Buat fail baharu dan tambah baris dari maven:3.5-jdk-8

  • Profil Docker: Salin application.properties ke application-docker.properties, dan tukar alamat sambungan pangkalan data dalam application-docker.properties kepada jdbc:mysql://mysql:3306/test.

  • fail konfigurasi nginx

  • 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

Pengesahan penggunaan

Letakkan keseluruhan fail Salin ke pelayan dan gunakan

untuk menjalankannya. docker-compose up

Atas ialah kandungan terperinci Cara menggunakan dockercompose untuk membina aplikasi springboot-mysql-nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam