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
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
@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."; } }
fail konfigurasi dockercompose
@entity public class visitor { @id @generatedvalue private long id; @column(nullable=false) private long times; @column(nullable=false) private string ip; // get,set 方法略 }
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
command: mvn clean spring-boot:run -dspring-boot.run.profiles=docker
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
Pengesahan penggunaan
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!