Ada artikel Getting Start di situs web resmi Spring, yang memperkenalkan cara menggunakan Docker untuk menerbitkan aplikasi Spring Boot. Ini cukup rinci, tetapi beberapa detail tidak disebutkan, dan manual entri situs web resmi ada dalam versi bahasa Inggris. Mari kita organisasi dan catat di sini, sebagai referensi untuk teman -teman dengan bahasa Inggris yang buruk, dan tinggalkan diri Anda memorandum.
Mempersiapkan
Alat yang Diperlukan dan Lingkungan Operasi:
Buat proyek
Pertama -tama, Anda perlu membuat proyek boot musim semi. Spring Tool Suite dan Ide IntelliJ keduanya datang dengan plug-in untuk dibuat. Cara lain adalah membuatnya dari http://start.spring.io/. Metode ini direkomendasikan. Setelah mengisi Group Id dan Artifact Id dalam formulir, klik tombol Proyek Generate untuk menghasilkan dan mengimpor proyek yang diunduh ke IDE favorit Anda.
Ubah file pom.xml dan tambahkan docker-maven-plugin:
<? Xml Version = "1.0" encoding = "utf-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org.org/xd/. ".0 <modelVersion>4.0.0</modelVersion> <groupId>org.matrixstudio.springboot</groupId> <artifactId>docker</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>docker</name> <description>Demo project for Spring Boot</description> <parent> <groupid> org.springframework.boot </groupid> <ArtifactId> Spring-boot-starter-parent </arttifactid> <version> 1.5.2.release </versi> <proyative/> <!-Lookup Parent dari Repository-> </Parent> <versies> <Project.build.sourceCoding-> </Parent- Properties> <Project.build.sourceCoding-> </Parents> <proyp Project.build.sourceCoding <Project.Reporting.outputEncoding> utf-8 </project.reporting.outputEncoding> <Java.version> 1.8 </java.version> <docker.image.prefix> </docker.image.prefix> </Properties> <dependencies> </docker. <ArtifactId> Spring-Boot-starter-web </stifactid> </dependency> <dependency> <Groupid> org.springframework.boot </proupid> <RaintifactId> Spring-boot-starter-test </artifactid> <scope> uji </scope> </dependency> </dependence> <scope> <scope> test </scope> </dependency> </dependence> </scope> <cope> </scope> </dependency> </Dependencees> <groupId> org.springframework.boot </proupid> <ArtifactId> spring-boot-maven-plugin </arttifactid> </lugin> <!-plugin Maven Docker-Plugin> </Groupid> Com.spotify </groupid> <ArTifactId> Docker-Maven-plipin> </Artidid </Artifactid> Docker-Maven-Maven-Lowin </AcTotify. <AmageName> $ {docker.image.prefix}/$ {Project.artifactId} </magename> <lockerDirectory> SRC/Main/Docker </lockerDirectory> <Serubah> <Serayat> <SourcePath>/</targetPath> <Recoptory> $ {proyek.build> <certed> $ {Project.build.finalname} .jar </cert> </seratey> </configuration> </lugin> </lugin> </build> </poject>Plugin Docker-Maven-Plugin digunakan untuk membangun proyek boot musim semi menjadi gambar Docker:
Buka file DockerApplication.java dan ubah ke konten berikut:
Paket org.matrixstudio.springboot; impor org.springframework.boot.springapplication; impor org.springframework.boot.autoconfigure.springbootApplication; impor org.springframework.web.bind.annotation.requestmapping; rrequestmapping; rrequestmapping; rrequestmapping; rrequest.request; ruquest.request; org.springframework.web.bind.annotation.RestController;@springbootApplication@restcontrollerPublic kelas DockerApplication {@RequestMapping ("/") Public String Home () {return "Hello Docker World"; } public static void main (string [] args) {springApplication.run (DockerApplication.class, args); }} Kompilasi dan jalankan
Jalankan Proyek Spring Boot dengan mengeksekusi perintah berikut:
paket mvn && java -jar target/docker-0.0.1-snapshot.jar
Buka browser dan masukkan http://localhost:8080 . Jika "Hello Docker World" muncul, itu berarti bahwa pelarian itu berhasil.
Catatan: Saat menjalankan perintah di atas, Anda perlu mengunduh banyak paket ketergantungan dari repositori Maven resmi. Jaringan domestik tidak stabil dan kecepatan unduhannya lambat. Anda dapat mempertimbangkan menggunakan situs cermin yang disediakan oleh pihak ketiga, seperti repositori cermin Maven Alibaba. Tambahkan konfigurasi berikut ke pom.xml:
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/maven.romp.romp.romp. http://maven.apache.org/xsd/maven-4.0.0.xsd "> <nodelversion> 4.0.0 </podelversion> <groupid> org.matrixstudio.springboot </packing> <artifactid> Docker </arttifactid> </groupid> <artifactid> Docker </arttifactid> </groupaging. <!-- Dependencies --> ...... <!-- Build --> ...... <!-- Aliyun repository --> <repository> <id>central</id> <name>aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </seleases> </bepository> </potepository> </bepository> </potsitory> </joy Project>
Proyek kontainerisasi
Pertama, pastikan bahwa Docker dipasang di mesin Anda. Jika Docker Anda diinstal pada server Linux, Anda perlu mengunggah proyek Spring Boot di atas ke server. Langkah -langkah berikut menganggap bahwa Anda beroperasi di lingkungan Linux.
Buat DockerFile
Docker menggunakan file bernama Dockerfile untuk menentukan lapisan gambar, jadi pertama -tama kita harus membuat file Dockerfile dan menjalankan perintah berikut untuk membuat file Dockerfile :
sudo tee src/main/docker/dockerfile <<-'eof'from frolvlad/alpine-oraclejdk8: slimvolume/tmpadd docker-0.0.1-snapshot.jar app.jarrun "" souch -c "" touch /app.jar'env java_opts = "" "" "," "", "" "," "" "," "" "," "" "," "", "" "," "" "," "" "," "" "," "" "," "" "" "" "" snapshot $ Java_opts -djava.security.egd = file:/dev /./ urandom -jar /app.jar "] eof
Mari kita jelaskan perintah di atas:
Bangun gambar Docker
Jalankan perintah berikut untuk membangun gambar Docker:
MVN Paket Docker: Build
Setelah build selesai, jalankan perintah berikut untuk melihat:
Gambar Sudo Docker
Hasilnya adalah:
ID Tag Repositori Ukuran dibuat
springio/docker terbaru 7e2ba2f7e81e 2 menit yang lalu 195 mb
Frolvlad/Alpine-oraclejdk8 Slim 00D8610F052E 4 hari yang lalu 167 MB
Anda dapat melihat bahwa gambar yang kami bangun telah muncul, dan langkah selanjutnya adalah menjalankan gambar.
Jalankan gambar Docker
Jalankan perintah berikut untuk menjalankan gambar Docker yang dibangun di langkah sebelumnya:
sudo docker run -p 8080: 8080 -t springo/docker
Jika tidak ada yang tidak terduga terjadi, Anda akan melihat output berikut:
. ____ _ __ _ /// / ___'_ _ _ (_) _ __ __ _ / / / / / / () / ___ | '_ |' _ | / / / / `| | / / / / / / / / / / / / / | | .__ || | _ | | _ | | _ | | _/__, | / / / / / =========================================== ____ / = / _ / _ / :: Spring Boot :: (v1.5.2.release) 2017-03-08 03: 34: 59.434 Info 6 -POOKS) omson. DockerApplication v0.0.1-snapshot di 00EED53E6928 dengan PID 6 (/app.jar dimulai dengan root in /) 2017-03-08 03: 34: 59.445 Info 6 --- [Main] Omspringboot.DockerApplication: Tidak ada profil aktif yang ditetapkan, jatuh ke belakang ke default: omspringboot. Info 6 --- [Utama] CationConfigembeddedWebApplicationContext: Refreshing org.springframework.boot.context.embedded.annotationconfigbeddeddedWebApplicationContext@4b9af9a9: Tanggal Startup [Wed Mar 08 08 03:34:59 GMT 2017]; Root of Context Hierarchy2017-03-08 03: 35: 03.755 Info 6 --- [Utama] SbcettomcatembeddedServletContainer: Tomcat Diinisialisasi dengan Port: 8080 (http) 2017-03-08 03: 35: S): 8080 (http) 2017-03-08 03: 35: 35: 03.807 Info 6 -aPA. Layanan Tomcat2017-03-08 03: 35: 03.821 Info 6 --- [Utama] org.apache.catalina.core.standardengine: Starting Servlet Engine: Apache Tomcat/8.5.112017-03-08 03: 35: 04.042 Info 6 --- [ost-St-St-start-1. Initializing Spring embedded WebApplicationContext2017-03-08 03:35:04.043 INFO 6 --- [ost-startStop-1] ost-web.context.ContextLoader : Root WebApplicationContext: initialization completed in 4303 ms2017-03-08 03:35:04.441 INFO 6 --- [ost-startStop-1] OST-BWSERVLET.ServletRegistrationBean: Pemetaan Servlet: 'DispatcherServlet' ke [/] 2017-03-08 03: 35: 04.455 Info 6 --- [ost-startstop-1] osbwservlet.filterregistrationBean: pemetaan filter: 'oSbwservlet.filterregistrationBean: pemetaan:' '' '' '' 'toulcodingfilter' To oSBWServlet. 03: 35: 04.457 Info 6 --- [OST-StartStop-1] OSBWServlet.FilterregistrationBean: Mapping Filter: 'HiddenHttpMethodFilter' ke: [/*] 2017-03-08 03: 35: 04.468 Info 6 --- [ost-start-starts-1 03: 35: 04.468 Info 6 --- [ost-start-starts-1 03: 35: 04.468 Info 6 --- [ost-start-start-108 03: 04.468 Info 6 --- [ost-start-start-10 'httpputformcontentfilter' to: [/*] 2017-03-08 03: 35: 04.468 Info 6 --- [OST-StartStop-1] OSBWServlet.FilterregistrationBean: Pemetaan: '03.15.110.15.110.15.110.15.110.15.110.15.110.15.110.15.110.15.110.15.110.15.110.15.110.15. swsmmarequestmappingHandlerAdapter: mencari @controlleradvice: org.springframework.boot.context.embedded.annotationconfigbeddedddedwapplicationContext@4B9AF9A9: Tanggal startup [RAD Mar 08 03:34:59 GMT 2017]; Root of Context Hierarchy2017-03-08 03: 35: 05.390 Info 6 --- [Utama] swsmmarequestmappingHandlermapping: dipetakan "{[/]}" ke java. ' org.springframework.boot.autoconfigure.web.basicerrorController.errorhtml (javax.servlet.http.httpservletRequest, javax.servlet.http.httpservletrespons) 2017-03-08-03.45. swsmmarequestmappinghandlermapping: dipetakan "{[/error]}" ke org.springframework.http.responseentity publik <java.util.map <java.lang.string, java.lang.object >> org.springframework.boot.autoconfigure.web.basicerrorController.Error (javax.servlet.http.httpservletrequest) 2017-03-08 03: 35: 05.512 info 6 --- [utama] oswshandler.simple.simple: oSwshller.Simple.simple: 05.512 Info 6 --- [Main] OSWSHANDLER.SIMPPLED. Handler of Type [kelas org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-03-08 03: 35: 05.512 Info 6 --- [Main] Oswshandler.SimpleUrhandlermapping: dipetakan Jalur URL [/** ke Handsler. org.springframework.web.servlet.resource.resourcehttpRequestHandler] 2017-03-08 03: 35: 05.639 Info 6 --- [Main] Oswshandler.Simpleurlandlermapping: Mapped Url Path [/**/favicon.ico] ke Handlerling org.springframework.web.servlet.resource.ResourceHttpRequestHandler]2017-03-08 03:35:06.019 INFO 6 --- [ main] osjeaAnnotationMBeanExporter : Registering beans for JMX exposure on startup2017-03-08 03:35:06.168 INFO 6 --- [ main] SbcettomcatembeddedServletContainer: Tomcat dimulai di Port (S): 8080 (http) 2017-03-08 03: 35: 06.183 Info 6 --- [Utama] Omspringboot.dockerplication: Mulai DockerApplication di 7.893 detik (jvm running 8.73-2) 03:35:56.728 INFO 6 --- [nio-8080-exec-1] occC[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet'2017-03-08 03:35:56.728 INFO 6 --- [nio-8080-exec-1] osweb.servlet.DispatcherServlet : FramewA bekerja 'DispatcherServlet': Inisialisasi dimulai2017-03-08 03: 35: 56.774 Info 6 --- [NIO-8080-EXEC-1] OSWEB.Servlet.DispatcherServlet: DispatcherServlet FramewArderVletJalankan perintah berikut untuk melihat wadah Docker yang sedang berjalan:
Sudo Docker PS
Anda dapat melihat bahwa ada wadah Docker yang berjalan:
Perintah ID ID Kontainer Dibuat Status Port Names00EED53E6928 Springio/Docker "Sh -C 'Java $ Java ..." Sekitar satu menit yang lalu sekitar satu menit 0,0.0.0:8080->8080/TCP fervent_leavitt
Sekarang masukkan http: // localhost: 8080 untuk melihat hasil "Hello Docker World".
Jika Anda ingin menghentikan wadah, Anda dapat menjalankan perintah berikut:
sudo docker berhenti 00e
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.