1. บทนำสู่ Docker
Docker เป็นเอ็นจิ้นคอนเทนเนอร์แอปพลิเคชันโอเพ่นซอร์สที่อนุญาตให้นักพัฒนาสามารถบรรจุแอปพลิเคชันและการพึ่งพาของพวกเขาลงในคอนเทนเนอร์แบบพกพาแล้วเผยแพร่ไปยังเครื่อง Linux ยอดนิยมหรือทำให้เป็นเสมือนจริง คอนเทนเนอร์ใช้กลไก Sandboxing อย่างสมบูรณ์และจะไม่มีส่วนต่อประสานระหว่างพวกเขา Docker Image เป็นวิธีแก้ปัญหาสำหรับการเรียกใช้กระบวนการคอนเทนเนอร์ ในบทความนี้เราจะสร้างแอปพลิเคชันสปริงบูตอย่างง่าย
2. การก่อสร้างสิ่งแวดล้อม
JDK 1.8+
Maven 3.0+
Docker เวอร์ชันล่าสุด
3. สร้างโครงการด้วย maven
3.1 สร้างโครงสร้างไดเรกทอรี
mkdir -p src/main/java/com/lidong/demo
ในระบบ Linux หรือ Mac
3.2 สร้างไฟล์ pom.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/ XSI: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" <ratifactid> lidong-spring-boot-demo </artifactid> <sersion> 1.0-snapshot </เวอร์ชัน> <carent> <roupid> org.springframework.boot </groupid> <ratifactid> สปริง <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> </perctency> <การพึ่งพา> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Thymeleaf </artifactid> </การพึ่งพา> </การพึ่งพา> </การพึ่งพา> <ArtIfactId> Spring-Boot-Maven-Plugin </artifactId> </plugin> <plugin> <loupid> com.spotify </groupId> <ratifactid> Docker-Maven-Plugin </artifactid> <cersion> 0.4.13 <AmageName> $ {docker.image.prefix}/$ {project.artifactid} </imageName> <DockerDirectory> SRC/Main/Docker </DockerDirectory> <รวม> $ {project.build.finalName} .jar </cultes> </sursece> </resources> </การกำหนดค่า> </plugin> </plugins>สังเกต:
ปลั๊กอิน Spring Boot Maven มีคุณสมบัติที่สะดวกมากมาย:
1) มันรวบรวมไฟล์ JAR ทั้งหมดบน ClassPath และสร้างเป็นขวดเดียวที่รันได้ซึ่งทำให้สะดวกในการเรียกใช้และถ่ายโอนบริการ
2) มันค้นหาวิธีการเป็นโมฆะแบบคงที่สาธารณะ () เพื่อทำเครื่องหมายเป็นคลาสที่เรียกใช้ได้
3) มันมีตัวแยกวิเคราะห์การพึ่งพาในตัวสำหรับการตั้งค่าหมายเลขเวอร์ชันเพื่อจับคู่การพึ่งพาของสปริงบูต คุณสามารถแทนที่เวอร์ชันใด ๆ ที่คุณต้องการ แต่จะเริ่มต้น
ชุดบูตเวอร์ชันที่เลือก
ปลั๊กอิน Docker-Maven-Plugin ของ Spotify เป็นภาพนักเทียบท่าที่ใช้ในการสร้าง maven
1) ImageName ระบุชื่อของภาพ ตัวอย่างนี้คือ Springio/Lidong-Spring-Boot-Demo
2) DockerDirectory ระบุตำแหน่งของ DockerFile
3) ทรัพยากรหมายถึงไฟล์ที่ต้องจัดทำพร้อมกับ DockerFile และใช้เมื่อสร้างภาพ โดยทั่วไปจะต้องรวมแพ็คเกจขวดแอปพลิเคชัน
4. เขียนแอปพลิเคชันการบูตสปริงแรก
เขียนแอปพลิเคชันสปริงบูตอย่างง่าย:
src/main/java/com/lidong/demo/sampleController.java:
แพ็คเกจ com.lidong.demo; นำเข้า org.springframework.boot.springapplication; นำเข้า org.springframework.boot.autoconfigure.springbootapplication; นำเข้า org.springframework.stereotype.controller; org.springframework.web.bind.annotation.responsebody;/** * @project ชื่อ: lidong-dubbo * @class ชื่อ: SampleController * @class คำอธิบาย: * @author: Lidong * @creation Time: 2017/2/19 9:34 am * @company @Email: [email protected] */ @Controller @SpringBootapplicationPublic คลาส SampleController {@ResponseBody @RequestMapping (value = "/") สตริงบ้าน () {กลับ "Hello Docker World"; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {springapplication.run (sampleController.class, "-server.port = 8081"); -
คลาสถูกระบุโดย @springbootapplication @RestController และสามารถใช้เพื่อจัดการคำขอเว็บโดย Spring MVC
@RequestMapping Map / to Home () และตอบกลับด้วย "Hello Docker World"
วิธีการหลัก () ใช้เมธอด SpringApplication.run () ของ Spring Boot เพื่อเริ่มแอปพลิเคชัน
5. เรียกใช้โปรแกรม
5.1 ใช้คำสั่ง maven
แพ็คเกจ MVN
วิ่ง:
Java -jar เป้าหมาย/lidong-spring-boot-demo-1.0-snapshot.jar
เยี่ยมชมโครงการ
หากโปรแกรมทำงานอย่างถูกต้องเบราว์เซอร์จะไปที่ http: // localhost: 8081/และคุณสามารถเห็นคำว่า "Hello Docker World" บนหน้า
5.2 การใช้ปลั๊กอินแนวคิด
6. คอนเทนเนอร์โครงการ
Docker ใช้รูปแบบไฟล์ DockerFile เพื่อระบุเลเยอร์รูปภาพ
สร้างไฟล์ SRC/Main/Docker/DockerFile:
จาก Frolvlad /Alpine-Oraclejdk8: Slimvolume /tmpadd lidong-spring-boot-demo-1.0-snapshot.jar app.jarrun sh -c 'touch /app.jar'env java_opts = "" -djava.security.egd = ไฟล์:/dev /./ urandom -jar /app.jar "]
อธิบายไฟล์กำหนดค่านี้:
ปริมาณระบุไดเรกทอรีไฟล์ชั่วคราว AS /TMP เอฟเฟกต์คือการสร้างไฟล์ชั่วคราวในไดเรกทอรีโฮสต์ /var /lib /docker และเชื่อมโยงไปยังคอนเทนเนอร์ /TMP ขั้นตอนการปรับเปลี่ยนเป็นทางเลือกและจำเป็นหากเกี่ยวข้องกับการประยุกต์ใช้ระบบไฟล์ ไดเรกทอรี /TMP ใช้เพื่อคงอยู่กับโฟลเดอร์ Docker Data เนื่องจากคอนเทนเนอร์ Tomcat แบบฝังตัวที่ใช้โดย Spring Boot ใช้ /TMP เป็นไดเรกทอรีการทำงานโดยค่าเริ่มต้น
ไฟล์ jar ของโครงการจะถูกเพิ่มลงในคอนเทนเนอร์
entrypoint ดำเนินการโครงการ App.jar หากต้องการลดเวลาเริ่มต้น Tomcat ให้เพิ่มคุณสมบัติระบบเพื่อชี้ไปที่ "/dev/urandom" เป็นแหล่งเอนโทรปี
สร้างภาพนักเทียบท่า
ดำเนินการบิลด์เพื่อเป็นภาพนักเทียบท่า:
MVN Package Docker: Build
วิ่ง
เรียกใช้ภาพนักเทียบท่า
Docker Run -p 8081: 8081 -t Springio/Lidong-Spring-Boot-Demo
ดูไอคอนฤดูใบไม้ผลินี้ ฉันคิดว่าเราได้เสร็จสิ้นโปรแกรม Spring Boot บน Docker
ถัดไปไปที่เบราว์เซอร์และเยี่ยมชม http: // localhost: 8081/และคุณสามารถเห็นคำว่า "Hello Docker World" บนหน้า
สรุป
ข้างต้นเป็นแอปพลิเคชันสปริงบูตที่แนะนำโดยตัวแก้ไข แอปพลิเคชันสปริงบูตถูกสร้างเรียกใช้และปล่อยผ่าน Docker ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!