Rumah >Java >javaTutorial >Cara docker menggunakan SpringBoot dan menggantikan pakej jar
Buat fail fail docker, yang akan digunakan kemudian.
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).
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.
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)
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 .
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
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
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
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!