มีบทความเริ่มต้นในเว็บไซต์ทางการของฤดูใบไม้ผลิซึ่งแนะนำวิธีการใช้ Docker เพื่อเผยแพร่แอปพลิเคชัน Spring Boot มีรายละเอียดค่อนข้างมาก แต่ไม่ได้กล่าวถึงรายละเอียดบางอย่างและคู่มือการเข้าเว็บไซต์อย่างเป็นทางการของเว็บไซต์อยู่ในเวอร์ชันภาษาอังกฤษ มาจัดระเบียบใหม่และบันทึกไว้ที่นี่เพื่อเป็นข้อมูลอ้างอิงสำหรับเพื่อนที่มีภาษาอังกฤษไม่ดีและทิ้งบันทึกตัวเองไว้
เตรียมตัว
เครื่องมือที่จำเป็นและสภาพแวดล้อมการดำเนินงาน:
สร้างโครงการ
ก่อนอื่นคุณต้องสร้างโครงการสปริงบูต SPRING Tool Suite และ Intellij Idea ทั้งคู่มาพร้อมกับปลั๊กอินเพื่อสร้าง อีกวิธีหนึ่งคือการสร้างมันจาก http://start.spring.io/ วิธีนี้แนะนำ หลังจากกรอก Group Id และ Artifact Id ในแบบฟอร์มให้คลิกปุ่มสร้างโครงการเพื่อสร้างและนำเข้าโครงการที่ดาวน์โหลดไปยัง IDE ที่คุณชื่นชอบ
แก้ไขไฟล์ pom.xml และเพิ่ม 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.apache.org/xsd.org <SoderVersion> 4.0.0 </sodverSion> <roupId> org.matrixstudio.springboot </groupId> <ratifactid> Docker </artifactid> <Sersion> 0.0.1-SNAPSHOT </เวอร์ชัน> <packaging> jar </packaging> <RoupID> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Parent </artifactid> <cersion> 1.5.2.release </version> <inelypath/> <! <Project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.roporting.outputencoding> UTF-8 </project.Reporting.OutputUning> <java.Version> 1.8 </properties> <การพึ่งพา> <การพึ่งพา> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Web </artifactid> <Scope> ทดสอบ </cope> </derctency> </การพึ่งพา> <uffer> <build> <plugins> <maveriD> <ArtIfactId> Docker-Maven-Plugin </artifactid> <sersion> 0.4.3 </เวอร์ชัน> <การกำหนดค่า> <AmageName> $ {Docker.image.prefix}/$ {project.artifactid} </imagename> <StargetPath>/</TargetAth> <Irectory> $ {Project.build.directory} </directory> <colled> $ {project.build.finalname} .jar </cold> </sorses> </การกำหนดค่า> </plugin>ปลั๊กอิน Docker-Maven-Plugin ใช้เพื่อสร้างโครงการสปริงบูตลงในภาพ Docker:
เปิดไฟล์ DockerApplication.java และแก้ไขเป็นเนื้อหาต่อไปนี้:
แพ็คเกจ org.matrixstudio.springboot; นำเข้า org.springframework.boot.springapplication; นำเข้า org.springframework.boot.autoconfigure.springbootapplication; org.springframework.web.bind.annotation.restcontroller;@springbootapplication@restcontrollerpublic class class dockerapplication {@requestmapping ("/") สตริงสาธารณะ () {return "Hello Docker World"; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {springapplication.run (dockerapplication.class, args); - รวบรวมและเรียกใช้
เรียกใช้โครงการ Spring Boot โดยดำเนินการคำสั่งต่อไปนี้:
MVN Package && java -jar target/docker-0.0.1-snapshot.jar
เปิดเบราว์เซอร์และป้อน http://localhost:8080 หาก "Hello Docker World" ปรากฏขึ้นนั่นหมายความว่าการวิ่งนั้นประสบความสำเร็จ
หมายเหตุ: เมื่อเรียกใช้คำสั่งด้านบนคุณต้องดาวน์โหลดแพ็คเกจการพึ่งพาจำนวนมากจากที่เก็บ Maven อย่างเป็นทางการ เครือข่ายในประเทศไม่เสถียรและความเร็วในการดาวน์โหลดช้า คุณสามารถพิจารณาใช้ไซต์กระจกที่จัดทำโดยบุคคลที่สามเช่นที่เก็บ Maven Mirror ของอาลีบาบา เพิ่มการกำหนดค่าต่อไปนี้เป็น pom.xml:
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/MANCMMMMMMMMMMMMMMMMMMMMMMMMMMBM http://maven.apache.org/xsd/maven-4.0.0.xsd "> <moderversion> 4.0.0 </modelversion> <moderversion> <spackatagating> all <spackating> jar.matrixstudio.springboot </modelversion> <!-การพึ่งพา-> ...... <!-build-> ...... <!-repository Aliyun-> <repository> <id> กลาง </id> <name> Aliyun </name> <url> http://maven.aliyun.com/nexus/content/groups/public/ </repository> </repository> </repository> </repository> </project>
โครงการคอนเทนเนอร์
ก่อนอื่นตรวจสอบให้แน่ใจว่ามีการติดตั้ง Docker บนเครื่องของคุณ หากนักเทียบท่าของคุณติดตั้งบนเซิร์ฟเวอร์ Linux คุณต้องอัปโหลดโครงการสปริงบูตด้านบนไปยังเซิร์ฟเวอร์ ขั้นตอนต่อไปนี้สมมติว่าคุณกำลังทำงานในสภาพแวดล้อม Linux
สร้าง DockerFile
Docker ใช้ไฟล์ชื่อ Dockerfile เพื่อระบุเลเยอร์รูปภาพดังนั้นเราต้องสร้างไฟล์ Dockerfile ก่อนอื่นและดำเนินการคำสั่งต่อไปนี้เพื่อสร้างไฟล์ Dockerfile :
sudo tee src/main/docker/dockerfile <<-'eof'from frolvlad/alpine-oraclejdk8: slimvolume/tmpadd Docker-0.0.1-snapshot.jar app.jarrun sh -c' touch /app.jar'env java_opt $ java_opts -djava.security.egd = ไฟล์:/dev /./ urandom -jar /app.jar "] eof
เรามาอธิบายคำสั่งข้างต้นอย่างคร่าวๆ:
สร้างภาพนักเทียบท่า
เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างอิมเมจนักเทียบท่า:
MVN Package Docker: Build
หลังจากบิลด์เสร็จสมบูรณ์ให้เรียกใช้คำสั่งต่อไปนี้เพื่อดู:
ภาพ Sudo Docker
ผลที่ได้คือ:
ขนาดแท็กภาพที่เก็บข้อมูลขนาดที่สร้างขึ้น
Springio/Docker ล่าสุด 7E2BA2F7E81E 2 นาทีที่ผ่านมา 195 MB
Frolvlad/Alpine-Oraclejdk8 Slim 00D8610F052E 4 วันที่ผ่านมา 167 MB
คุณจะเห็นว่าภาพที่เราสร้างขึ้นนั้นปรากฏขึ้นและขั้นตอนต่อไปคือการเรียกใช้ภาพ
เรียกใช้ภาพนักเทียบท่า
ดำเนินการคำสั่งต่อไปนี้เพื่อเรียกใช้อิมเมจนักเทียบท่าที่สร้างขึ้นในขั้นตอนก่อนหน้า:
Sudo Docker Run -p 8080: 8080 -t Springio/Docker
หากไม่มีอะไรเกิดขึ้นที่ไม่คาดคิดคุณจะเห็นผลลัพธ์ต่อไปนี้:
- - - - - - - / / / / / ============================================ ____ / = / _ / _ / :: สปริงบูต :: (v1.5.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2 Dockerapplication v0.0.1-snapshot บน 00EED53E6928 ด้วย PID 6 (/App.jar เริ่มต้นด้วยรูทใน /) 2017-03-08 03: 34: 59.445 ข้อมูล 6 --- [หลัก] OMSPRINGBOOT.DOCKERAPPLICATION --- [Main] CationConfigembeddedWebapplicationContext: รีเฟรช org.springframework.boot.context.embedded.annotationconfigembeddedwebapplicationContext@4b9af9a9: วันที่เริ่มต้น รากของบริบท Hierarchy2017-03-08 03: 35: 03.755 ข้อมูล 6 --- [หลัก] SBCettomcatembeddedservletContainer: Tomcat เริ่มต้นด้วยพอร์ต: 8080 (HTTP) 2017-03-08 03: 35: 03.807 บริการ TOMCAT2017-03-08 03: 35: 03.821 ข้อมูล 6 --- [หลัก] org.apache.catalina.core.standardEngine: เครื่องยนต์เซิร์ฟเล็ต: Apache Tomcat/8.5.112017-03-08 03: 35: 04.042 Info 6 --- การเริ่มต้นสปริงแบบฝังตัว webapplicationContext2017-03-08 03: 35: 04.043 ข้อมูล 6 --- [ost-startstop-1] ost-web.context.contextloader: รูท webapplicationContext: การเริ่มต้นเสร็จสมบูรณ์ใน 4303 MS2017-03-08 03: 35: 0441 OST-BWSERVLET.ServletRegistrationBean: การทำแผนที่ servlet: 'dispatcherservlet' ถึง [/] 2017-03-08 03: 35: 04.455 ข้อมูล 6 --- [ost-startstop-1] osbwservlet 03: 35: 04.457 ข้อมูล 6 --- [OST-StartStop-1] OsbwServlet.FilterRegistrationBean: การทำแผนที่ตัวกรอง: 'Hiddenhttpmethodfilter' ถึง: [/*] 2017-03-08 03: 35: 04.468 Info 6 --- ตัวกรองการแมป: 'httpputformcontentFilter' ถึง: [/*] 2017-03-08 03: 35: 04.468 ข้อมูล 6 --- [ost-startstop-1] osbwservlet.filterregistrationbean: การแมปตัวกรอง: 'requestcontextfilter' [Main] SWSMMAREQUESTMAPPIONDHANDLERADAPTER: มองหา @ControllerAdvice: org.springframework.boot.context.embedded.annotationconfigembeddedwebapplicationContext@4b9af9a9: วันที่เริ่มต้น รากของบริบท Hierarchy2017-03-08 03: 35: 05.390 ข้อมูล 6 --- [หลัก] SWSMMAREQUESTMAppingHandlermapping: แมป "{[/]}" ลงบน Java.lang.String org.matrixstudio.springboot.dockerapplication.home () --- [Main] SWSMMAREQUESTMAPPIONDHANDLerMapping: แมป "{[/ข้อผิดพลาด], ผลิต = [text/html]}" ไปยัง org.springframework.web.servlet.modelandview สาธารณะ org.springframework.boot.autoconfigure.web.basicerrorcontroller.errorhtml (javax.servlet.http.httpservletrequest, javax.servlet.http.httpservlet swsmmarequestmappinghandlermapping: แมป "{[/ข้อผิดพลาด]}" ลงบน org.springframework.http.responseentity <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 ข้อมูล 6 --- บนตัวจัดการประเภท [คลาส org.springframework.web.servlet.resource.resourcehtttprequesthandler] 2017-03-08 03: 35: 05.512 ข้อมูล 6 --- [Main] Oswshandler.simpleurlhandlhermapping org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-03-08 03: 35: 05.639 ข้อมูล 6 --- [หลัก] Oswshandler.simpleurlhandlermapping org.springframework.web.servlet.resource.resourcehtttprequesthandler] 2017-03-08 03: 35: 06.019 ข้อมูล 6 --- [หลัก] OsjeaannotationMbeanExporter: การลงทะเบียนถั่วสำหรับ JMX SBCETTOMCATEMBEDDEDSERVLETCONTAINER: TOMCAT เริ่มต้นที่พอร์ต: 8080 (HTTP) 2017-03-08 03: 35: 06.183 ข้อมูล 6 --- [หลัก] OMSPRINGBOOT.DOCKERAPPLICATION 03: 35: 56.728 ข้อมูล 6 --- [NIO-8080-EXEC-1] OCCC [Tomcat]. [localhost]. [/]: การเริ่มต้นเฟรมสปริงสปริง 'dispatcherservlet'2017-03-08 03: 35: 56.728 ข้อมูล 6 --- FrameworkServlet 'Dispatcherservlet': การเริ่มต้นเริ่มต้นขึ้น 2017-03-08 03: 35: 56.774 ข้อมูล 6 --- [NIO-8080-Exec-1] Osweb.servlet.Dispatcherservlet: FrameworkServletดำเนินการคำสั่งต่อไปนี้เพื่อดูคอนเทนเนอร์ Docker Running:
Sudo Docker PS
คุณจะเห็นว่ามีคอนเทนเนอร์ Docker กำลังทำงานอยู่:
คำสั่งคอนเทนเนอร์ id image image สร้างพอร์ตสถานะ name00eed53e6928 Springio/Docker "sh -c 'java $ java ... " ประมาณหนึ่งนาทีที่ผ่านมาประมาณหนึ่งนาที 0.0.0.0:8080->8080/tcp fervent_leavitt
ตอนนี้ป้อน http: // localhost: 8080 เพื่อดูผลลัพธ์ "Hello Docker World"
หากคุณต้องการหยุดคอนเทนเนอร์คุณสามารถเรียกใช้คำสั่งต่อไปนี้:
Sudo Docker หยุด 00e
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น