Artikel ini memperkenalkan metode menggunakan plug-in Maven untuk membangun gambar Docker. Saya akan membaginya dengan Anda. Dengan rincian sebagai berikut:
alat
Jika Anda ingin melakukan pekerjaan dengan baik, terlebih dahulu Anda harus mempertajam alat Anda. Setelah penelitian, plug-in Docker Maven berikut telah memasuki bidang penglihatan saya:
| Nama plugin | Alamat resmi |
|---|---|
| Docker-Maven-plugin | https://github.com/spotify/docker-maven-plugin |
| Docker-Maven-plugin | https://github.com/fabric8io/docker-maven-plugin |
| Docker-Maven-plugin | https://github.com/bibryam/docker-maven-plugin |
Penulis memilih yang pertama dari tiga dimensi: bintang, kemudahan penggunaan dan memperbarui frekuensi.
Bangun gambar Docker dengan plugin
Penggunaan sederhana
Mari kita ambil proyek sebelumnya: microservice-discovery-eureka sebagai contoh:
Tambahkan paragraf berikut di pom.xml
<build> <lugin> <!-plugin Maven Docker, situs web resmi: https://github.com/spotify/docker-maven-plugin-> <lugin> <groupid> com.spotify </groupid> <artifactid> </docker-plugin </artfotify </groupId> <artifactid> </docker-plugin </artifactid> <artifactid> </docker-plugin </arttifactid> </artifactid> </docker-plugin </artifactid> </artifactid> </docker-plugin </artifactid> </artifactid> </docker-plugin </artifactid> </artifactid> </docker-plugin </artifactid> <couldly..14. Reguler [a-z0-9-_.], Kalau tidak, build tidak akan berhasil-> <!-lihat: https://github.com/spotify/docker-maven-plugin nama repositori yang tidak valid ... hanya </a-eban </inguage </imagrime> <magename> microservice-diskovery-uure <ebeurka </imagrime <magrimage> microservice-diskovery- ebeurka </imagrime <magrimage> microservice-diskovery- ebeurka </imagrime <magrimage> microservice-diskovery-uura </ebeura </imagrime <magrime> microservice-diskovery- ebiure </imagrime <magrime> microservice-diskovery- ebeura </imagrime> <EntryPoint> ["java", "-jar", "/$ {Project.build.finalname} .jar"] </dentspoint> <urser sumber daya> <sumberce> <targetpath>/</targetpath> <directory> $ {project.build.directory} </targetpath> <clude> $ {project.build. </configuration> </lugin> </lugin> </bangun> Jalankan perintah:
MVN Clean Package Docker: Build
Kami akan menemukan bahwa konsol memiliki sesuatu seperti berikut:
[Info] Bangunan gambar microservice-discovery-eurekastep 1: dari javapulling dari perpustakaan/javadigest: sha256: 581a4afcbbedd8fdf194d597cb5106c1f91463024fb3a49a2d9f025516c1f91463024fb3a49a2d9f02516c1f9167e.a ' /Microservice-discovery-eureka-0.0.1-snapshot.jar ---> berjalan di 0F2AECCDFD46 ---> D57B027CA65Aremoving Container Intermediate 0F2AECCDFD46-Buildy dengan D57B027A7A7A-DECROCE [info] MICROCECOCEDLOYSDENDUHN ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Selamat, pembangunannya berhasil.
Kami mengeksekusi gambar Docker dan menemukan bahwa gambar telah berhasil dibangun:
ID gambar tag repositori dibuat sizemicroservice-discovery-eureka terbaru d57b027ca65a sekitar satu menit yang lalu 681.5 mb
Mulai cermin
Docker Run -P 8761: 8761 Microservice-Discovery-Eureka
Kami akan menemukan bahwa gambar Docker akan dimulai dengan sangat cepat.
Tes akses
Kunjungi http: // Docker Host IP: 8761 untuk melihat antarmuka Eureka secara normal.
Bangun dengan Dockerfile
Metode di atas adalah cara termudah. Sering kali, kita masih perlu membangunnya dengan bantuan Dockerfile. Pertama, kami membuat file DockerFile di/Microservice-Discovery-Eureka/SRC/Main/Docker Directory.
Dari Java: 8volume/tmpadd-microservice-discovery-eureka-0.0.1-snapshot.jar app.jarrun bash -c 'touch /app.jar'expose 9000Entrrypoint ["java", "-djava.security.egd = file:/devi /./
Ubah pom.xml
<build> <lugin> <!-plugin Maven Docker, situs web resmi: https://github.com/spotify/docker-maven-plugin-> <lugin> <groupid> com.spotify </groupid> <artifactid> </docker-plugin </artfotify </groupId> <artifactid> </docker-plugin </artifactid> <artifactid> </docker-plugin </arttifactid> </artifactid> </docker-plugin </artifactid> </artifactid> </docker-plugin </artifactid> </artifactid> </docker-plugin </artifactid> </artifactid> </docker-plugin </artifactid> <couldly..14. Reguler [a-z0-9-_.], Kalau tidak, build tidak akan berhasil-> <!-lihat: https://github.com/spotify/docker-maven-plugin nama repositori tidak valid ... hanya [a-z0-9-_. Terletak-> <lockerdirectory> $ {Project.basedir}/src/main/docker </dockerDirectory> <urseranya> <pourse> <sursterpath>/</targetpath> <directory> $ {Project.build.directory} </directory> <clude> $ {project.build.build. </lugin> </lugin> </bangun>Langkah -langkah lainnya sama. Dengan cara ini, Anda dapat menggunakan DockerFile untuk membangun gambar Docker.
Gambar Docker Dorong di Dockerhub
Pertama ubah pengaturan file konfigurasi global Maven.xml dan tambahkan paragraf berikut
<server> <server> <dock> Docker-hub </dent> <username> Nama pengguna Dockerhub Anda </Senername> <swasword> Kata sandi Dockerhub Anda </swascard> <donfiguration> <mail> Kotak surat Dockerhub Anda </selail> </configuration> </server> </server> Anda Dockerhub Anda </email> </configuration> </server> </server> Anda
Buat repo di Dockerhub
Proyek pom.xml dimodifikasi ke yang berikut: Perhatikan bahwa jalur imagename harus konsisten dengan jalur repo
<build> <lugin> <!-plugin Maven Docker, situs web resmi: https://github.com/spotify/docker-maven-plugin-> <lugin> <groupid> com.spotify </groupid> <artifactid> </docker-plugin </artfotify </groupId> <artifactid> </docker-plugin </artifactid> <artifactid> </docker-plugin </arttifactid> </artifactid> </docker-plugin </artifactid> </artifactid> </docker-plugin </artifactid> </artifactid> </docker-plugin </artifactid> </artifactid> </docker-plugin </artifactid> <couldly..14. Reguler [a-z0-9-_.], Kalau tidak, build tidak akan berhasil-> <!-lihat: https://github.com/spotify/docker-maven-plugin nama repositori yang tidak valid ... hanya [a-z0-9-_. <mageName> eacdy/test </magename> <!-Tentukan jalur di mana DockerFile berada-> <lockerdirectory> $ {Project.basedir}/src/main/docker </lockerdirectory> <pourese> <ser Resource> <targetpath>/</targetpath> <drecorpory> $ {direction. <Serted> $ {Project.Build.FinalName} .jar </cert> </serformage> </sumber daya> <!- Dua baris berikut digunakan untuk Docker Push to Dockerhub. -> <serverId> Docker-hub </serverid> <registryurl> https://index.docker.io/v1/ </registryUrl> </configuration> </lugin> </lugin> </bangun> Jalankan perintah:
MVN Clean Package Docker: Build -DpushImage
Setelah konstruksi berhasil, kami akan menemukan bahwa gambar Docker telah didorong ke Dockerhub.
Dorong gambar ke repositori pribadi
Dalam banyak skenario, kita perlu mendorong cermin ke repositori pribadi. Untuk menjelaskan kelengkapan, repositori pribadi menggunakan repositori pribadi yang mengonfigurasi otentikasi login.
Sama seperti mendorong ke Dockerhub, pertama -tama kita perlu memodifikasi pengaturan file konfigurasi global Maven.xml dan menambahkan paragraf berikut
<Server> <server> <dreger-registry </d> <username> Nama pengguna DockERHUB Anda </username> <swasword> Kata Sandi Dockerhub Anda </swascord> <donfiguration> <mail> Kotak surat Dockerhub Anda </saily> </donfiguration> </ver server> </server> Anda </server> </server>
Ubah pom.xml proyek menjadi berikut,
<lugin> <groupid> com.spotify </proupid> <Raintifactid> Docker-Maven-plugin </t Artifactid> <version> 0.4.12 </version> <donfiguration> <!-jalurnya adalah: alamat repositori pribadi/jalur cermin yang Anda inginkan-> <magename> Reg.itMuch.com/test-cul--pulul-r7 <lockerdirectory> $ {Project.basedir}/src/main/docker </lockerdirectory> <serodekan> <serumber> <sursterpath>/</targetpath> <directory> $ {project.build.final} </direktori> <certing> $ {proyek.build.final. dengan MAVEN Configuration File Settings.xml-> <ServerId> Docker-Registry </serverId> </configuration> </lugin> melaksanakan:
MVN Clean Package Docker: Build -DpushImage
Tunggu sebentar dan Anda akan sukses.
Jika Anda ingin mengunduh gambar dari server pribadi, jalankan:
Docker Login Reg.itMuch.com # Kemudian masukkan nomor akun dan kata sandi Docker Pull Reg.itmuch.com/test-pull-registry
Mengikat plugin untuk dieksekusi dalam fase
Dalam banyak skenario, kami memiliki kebutuhan seperti itu, misalnya, ketika menjalankan paket bersih MVN, kami akan secara otomatis membangun gambar Docker untuk kami. Apakah tidak apa -apa? Jawabannya adalah ya. Kita hanya perlu mengikat tujuan plugin ke fase tertentu.
Fase dan tujuan yang disebut dapat dipahami sebagai berikut: Format perintah Maven adalah: MVN Fase: Sasaran, misalnya, MVN Package Docker: Build, Maka, Paket dan Docker keduanya fase, dan Build adalah tujuan.
Inilah contohnya:
Pertama kali konfigurasikan properti:
<Properties> <Docker.image.prefix> Reg.itMuch.com </docker.image.prefix> </ Properties>
Konfigurasi Plugin:
<build> <lugin> <Plugin> <GroupId> com.spotify </groupId> <ArTifactId> Docker-maven-plugin </artifactId> <Executions> <Execution> <duCure> Build-Image </dux> <fase> </fase> <cound> <cound> </goal> </gol </iD </fase> </phase> <cound> <ject> </goal> </gol </gol> </execution> <mageName> $ {docker.image.prefix}/$ {Project.artifactId} </magename> <BaseImage> Java </baseImage> <TRESTPOINT> ["java", "-jar", "/$ {project.build.finalname} .jar"] </entri {project.build.finalname} .jar "] </entri {poject.build.finalname} .Jar"] </entri {{project.build.finalname} .jar "] </entri {{project.build.finalname} .Jar"] </entri {{project.build.finalname} .jar "] </entri {{project. <recrectory> $ {Project.build.directory} </directory> <sertakan> $ {Project.build.finalname} .jar </cert> </serewati> </serateerSeperti di atas, kita hanya perlu menambahkan:
<Executions> <Ececution> <duD> Build-image </d> <phase> paket </phase> <jetik> <eals> Build </ject> </ject> </execution> </executions>
Lakukan saja. Contoh ini mengacu pada target build Docker, terikat pada fase paket. Dengan kata lain, pengguna hanya perlu menjalankan paket MVN dan secara otomatis menjalankan MVN Docker: Build.
Pengecualian umum
Tidak dapat terhubung ke 2375 (biasanya di Win7)
Salinan kode adalah sebagai berikut:
Hubungkan ke LocalHost: 2375 [LocalHost/127.0.0.1, LocalHost/0: 0: 0: 0: 0: 0: 0: 0: 1] Gagal: Koneksi ditolak: Connect -> [Bantuan 1]
Langkah Solusi:
Masukkan Env Docker-Machine
$ Env: docker_tls_verify = "1" $ env: docker_host = "tcp: //192.168.99.100: 2376" $ env: docker_cert_path = "c: /users/administrator/docker/machine/machines/default
Tambahkan konfigurasi untuk plugin
<!-Salah satu cara untuk memecahkan masalah Connect to LocalHost: 2375, pastikan untuk konsisten dengan Docker-Machine Env--> <lockerhost> https://192.168.99.100:2376 </dockerhost> <dockercertpath> c :-users/administrator/.dockerhost> <dockercertpath> c: neusers/administrator/.dockerhost>
Setelah modifikasi, konfigurasi plug-in menjadi:
<lugin> <GroupId> com.spotify </proupid> <ArtifactId> Docker-maven-plugin </artifactid> <version> 0.4.12 </version> <donfigururation> <mageName> eacdy/test </magename> <dockerDirectory> $ {Project.basedir}/srcc/srcer/miring/pocker <docker> $ {project.basedir}/srcc/srcc/srcer/srucy Masalah Connect to LocalHost: 2375, pastikan untuk konsisten dengan Docker-Machine Env-> <lockerhost> https://192.168.99.100:2376 </dockerhost> <plercertpath> c: /users/administrator/.docker/machine/machines/machines/administrator/docker/machine/machines/machines/administrator/docker/machine <TargetPath>/</targetPath> <Recrectory> $ {Project.build.directory} </directory> <clude> $ {Project.build.finalname} .jar </cert> </sumberce> </sumber daya> <!- Dua baris berikut digunakan untuk Docker Push to DockerHub. -> <serverId> Docker-hub </serverid> <registryUrl> https://index.docker.io/v1/ </registryurl> </configuration> </plugin> Referensi: https://github.com/spotify/docker-maven-plugin/issues/116
Tips
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.