Rumah  >  Artikel  >  Java  >  Cara docker menggunakan SpringBoot dan menggantikan pakej jar

Cara docker menggunakan SpringBoot dan menggantikan pakej jar

PHPz
PHPzke hadapan
2023-05-12 14:16:142292semak imbas

Direktori projek

Cara docker menggunakan SpringBoot dan menggantikan pakej jar

fail fail docker

Buat fail fail docker, yang akan digunakan kemudian.

Pengedaran Fail

Buat folder /data/docker/helllolearn baharu pada pelayan (laluan fail boleh disesuaikan), dan salin pakej balang berpakej maven dan fail fail docker yang dibuat di atas ke pelayan Cipta folder baharu (/data/docker/hellolearn).

Cara docker menggunakan SpringBoot dan menggantikan pakej jar

Jana imej

docker build -t hellolearn .

docker build -t Nama imej: label dockerfile Kedudukan relatif, titik mewakili direktori semasa, dan lalai adalah terkini jika tiada teg ditulis.

Cara docker menggunakan SpringBoot dan menggantikan pakej jar

Mulakan bekas

docker run -d -p 8301:8301 --name hellolearn hellolearn

docker start hellolearn

Parameter -d adalah untuk membiarkan bekas berjalan di latar belakang; --p adalah untuk pemetaan port pada masa ini (port sebelum kolon) port dalam pelayan dipetakan ke bekas Port 8301 (port selepas kolon) (application.properties dikonfigurasikan dengan 8301)

Akses web

Cara docker menggunakan SpringBoot dan menggantikan pakej jar

penyerahan pemetaan pakej jar

Mengikut langkah di atas sudah cukup untuk mengendalikan keseluruhan proses penempatan docker springboot dengan mudah. Tetapi selepas memulakan bekas, setiap kali pakej balang perlu dikemas kini, imej mesti dibuat semula, dan kemudian bekas mesti dibuat semula. Proses ini sangat rumit dan tidak cekap. Jadi bagaimana untuk mengemas kini pakej balang secara langsung untuk melengkapkan penggunaan tanpa mengemas kini imej atau bekas?

5.1 Kemas kini fail docker

Barisan terakhir  entrypoint ["java","-jar","/data/learn-web-0.0.1-snapshot.jar"]  akan menjalankan fail learn-web-0.0.1-snapshot.jar dalam direktori /data dalam bekas.

5.2 Gunakan arahan docker build untuk membina imej

docker build -t hellolearn .

5.3 Cipta & mulakan bekas

docker run --name hellolearn -it -v /data/docker/newhellolearn/package:/data -d -p 8301:8301 hellolearn

-v Direktori hos dikaitkan dengan direktori kontena. Dengan cara ini, direktori /data/docker/newwellolearn/package hos dipetakan ke direktori /data docker.

Dalam kes ini, apabila pakej jar berubah, anda boleh terus mengemas kini pakej jar dalam direktori /data/docker/newwellolearn/package selepas mengemas kini pakej jar, anda perlu memulakan semula bekas .

Pengaturan skrip

Kaedah penggunaan pakej balang menyebabkan masalah Jika nama pakej balang berubah, seperti perubahan nombor versi (learn-web-0.0.1-snapshot.jar--. > >belajar-web-1.0.1-snapshot.jar). Apa yang perlu dilakukan? Kaedah ketiga penggunaan melalui skrip diperkenalkan di bawah.

6.1 Cipta fail hellolearn.sh

java -jar /data/learn-web-0.0.1-snapshot.jar

Letak hellolearn. sh dimuat naik ke /data/docker/helllolearn/scriptdeploy/package. Laluan folder ini boleh disesuaikan. Ingat laluan folder ini, yang akan digunakan kemudian.

6.2 Tambah kebenaran pelaksanaan skrip

chmod +x hellolearn.sh

6.3 Cipta fail docker

cmd ["sh","-c","/data/hellolearn.sh"]  dinyatakan dalam bekas Mulakan skrip hellolearn.sh yang dibuat dalam 6.1 semasa permulaan.

Perhatikan bahawa arahan terakhir yang dinyatakan di atas ialah titik masuk, yang ditukar kepada cmd dalam penggunaan skrip Jika anda berminat dengan perbezaan khusus antara titik masuk dan cmd, anda boleh mengetahui lebih lanjut.

6.4 Muat naik pakej jar

Letakkan pakej jar ke dalam direktori folder yang sama seperti hellolearn.sh, iaitu, /data/docker/hellolearn/scriptdeploy/package, dan kemudian tambah direktori ini apabila mencipta bekas (direktori hos) dipetakan ke direktori /data bekas. .

6.5 Gambarajah Struktur Direktori Fail

Cara docker menggunakan SpringBoot dan menggantikan pakej jar

Saya tidak tahu sama ada anda keliru tentang struktur direktori di sini saya memuat naik gambar rajah struktur direktori hos saya mesin untuk menjadikannya jelas sekali imbas.

6.6 Cipta imej

docker build -t hellolearn-script . Tempoh pada akhir

mewakili direktori semasa, jadi arahan untuk menjana imej perlu berada dalam Laksanakan dalam direktori di mana fail docker berada.

6.7 Buat & mulakan bekas

docker run --name hellolearn-script -it -v /data/docker/hellolearn/scriptdeploy/package:/data -d -p 8302 :8301 hellolearn-script

docker mulakan hellolearn-script

Kaitkan direktori /data/docker/hellolearn/scriptdeploy/package hos dengan pemetaan direktori /data bekas. Dalam kes ini, apabila pakej balang berubah, cuma kemas kini pakej balang dalam direktori hos secara terus. Walaupun nama pakej jar berubah, anda masih perlu mengemas kini skrip hellolearn.sh. Mulakan semula bekas selepas mengemas kini.

Kesan ujian web 6.8

Cara docker menggunakan SpringBoot dan menggantikan pakej jar

Lihat log docker

log docker [pilihan] id bekas

penerangan pilihan:

-f: Jejak keluaran log
--sejak: Paparkan semua log pada masa mula tertentu
-t: Paparkan cap masa
-- ekor : Senaraikan hanya n log kontena terkini

7.1 Lihat log selepas masa yang ditetapkan, hanya paparkan 100 baris terakhir:

log docker -f -t -- since="2020-10-01" --tail=100 id kontena

7.2 Semak log tempoh masa yang ditentukan

log buruh pelabuhan -t --sejak ="2020-10-01t19:00:00" --sehingga "2020-10-01t19:00:00" id bekas

7.3 Lihat log selepas masa yang ditetapkan:

log buruh pelabuhan -t --since="2020-10-01t19:00:00" id bekas

7.4 Lihat log 5 minit terakhir:

log buruh pelabuhan --sejak id kontena 5m

7.5 Laksanakan bash pada bekas yang ditentukan melalui perintah exec:

docker exec hellolearn -it /bin/bash  atau  docker exec -it hellolearn bash

7.6 Lihat ip docker

docker inspect --format='{{.networksettings.ipaddress}}' hellolearn

Masalah yang dihadapi

Perihalan masalah : tindak balas ralat daripada daemon: pemandu gagal memprogramkan sambungan luaran pada titik akhir flamboyant_leavitt (iptables gagal: iptables --wait -t nat -a docker -p tcp -d 0/0 --dport 8301 -j dnat --to-destination 172.17. 0.2 :8301 ! -i docker0: iptables: tiada rantai/sasaran/padanan dengan nama itu.

Penyelesaian: Mulakan semula docker.  systemctl restart docker

Atas ialah kandungan terperinci Cara docker menggunakan SpringBoot dan menggantikan pakej jar. 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