บทความนี้แนะนำเทคนิคการใช้ Maven Docker Images และแบ่งปันกับคุณดังนี้:
Maven เป็นหนึ่งในเครื่องมือการจัดการโครงการ Java ที่ได้รับความนิยมมากที่สุดในปัจจุบันให้การจัดการการพึ่งพาแพ็คเกจที่มีประสิทธิภาพและฟังก์ชั่นการก่อสร้างแอปพลิเคชัน
Docker ให้ภาพ Maven อย่างเป็นทางการที่สามารถใช้ในการจัดการและสร้างแอปพลิเคชัน Java เมื่อเทียบกับการติดตั้งเครื่องมือ Maven โดยตรงการใช้อิมเมจ Docker นั้นมีความสามารถในการพกพาได้ดีขึ้นและสามารถเปลี่ยนรุ่นได้ง่ายซึ่งเหมาะสำหรับการใช้งานในระหว่างการรวมอย่างต่อเนื่อง
สำหรับการใช้งาน Maven Official Mirror โปรดดูเอกสารการใช้งาน
ใช้ Alibaba Cloud เพื่อเร่งความเร็ว
ความเร็วในการดาวน์โหลดของคลังสินค้าอย่างเป็นทางการของ Maven บนเครือข่ายภายในประเทศนั้นน่าปวดหัวจริงๆ การใช้อิมเมจ Maven ของ Alibaba Cloud สามารถปรับปรุงความเร็วในการดาวน์โหลดของแพ็คเกจซอฟต์แวร์ได้อย่างมาก
เราสามารถเพิ่มการกำหนดค่าอิมเมจ Alibaba Cloud ตามภาพ Maven อย่างเป็นทางการ รหัสมีอยู่ที่ https://github.com/aliyuncontainerservice/maven-image
การกำหนดค่าไฟล์การกำหนดค่า xml มีดังนี้
<การตั้งค่า xmlns = "http://maven.apache.org/settings/1.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" XSI: schemalocation = "http:/ https://maven.apache.org/xsd/settings-1.0.0.xsd "> <localepository>/usr/share/maven/ref/repository </localrepository> <url> http://maven.aliyun.com/nexus/content/groups/public/ </url> </irmor> <Mirror> <!-สิ่งนี้ใช้เพื่อกำกับสแน็ปช็อตสาธารณะในโปรไฟล์ด้านล่าง <url> http://maven.aliyun.com/nexus/content/repositories/snapshots/ </url> </irler> </irrors> </settings>
บริการ Alibaba Cloud Container ให้ภาพนักเทียบท่าที่สร้างไว้ล่วงหน้าสำหรับการใช้งานโดยตรงของรีจิสทรี CN-HANGZHOU.ALIYUNCS.COM/ACS/MAVEN
เราสามารถเรียกใช้คำสั่งต่อไปนี้ได้โดยตรงในไดเรกทอรีปัจจุบันเช่นใช้คำสั่ง MVN เพื่อสร้างแอปพลิเคชัน
คัดลอกรหัสดังต่อไปนี้: Docker Run -it - -rm -Name Maven -v "$ (PWD)":/usr/src/app -w/usr/src/registry.cn -hangzhou.aliyuncs.com/acs/maven
หากคุณต้องการแคชที่เก็บข้อมูล Maven ที่ดาวน์โหลดมาเราสามารถใช้ปริมาณไฟล์ของ Docker เพื่อนำไปใช้งานได้
ขั้นแรกให้ดำเนินการคำสั่งต่อไปนี้เพื่อสร้างระดับเสียงไฟล์ที่เรียกว่า "Maven-Repo"
Docker Volume Create-Name Maven-Repo
ในการโทรที่ตามมาให้ติดตั้งกับไดเรกทอรีดาวน์โหลดที่เก็บในภาพ Maven
คัดลอกรหัสดังต่อไปนี้: Docker Run -it - -rm -Name Maven -v "$ (PWD)":/usr/src/app -v maven -repo:/usr/share/maven/ref -w/usr/src/แอพรีจิสทรี
ด้วยวิธีนี้ที่เก็บ Maven จะไม่ถูกดาวน์โหลดทุกครั้ง
เพิ่มประสิทธิภาพ DockerFile เพื่อปรับปรุงความเร็วในการสร้าง
เราสามารถสร้างแอปพลิเคชันใน DockerFile และใช้กลไกการแคชแบบลำดับชั้นในระหว่างการก่อสร้างนักเทียบท่าเพื่อปรับปรุงความเร็วในการสร้าง
นี่คือตัวอย่าง dockerfile.build ไฟล์
จาก registry.cn-hangzhou.aliyuncs.com/acs/maven:3-jdk-8env my_home =/usr/src/apprun mkdir -p $ my_homeworkdir $ my_homeadd pom.xml $ my_home# ["/USR/LOCAL/BIN/MVN-ENTRYPOINT.sh","MVN","Verify"phoin"-"-"--fail-ever"phail"phail $ my_home# เรียกใช้ maven verifyrun ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify"
หนึ่งในเทคนิคที่สำคัญคือการเพิ่ม pom.xml ก่อนไปยังไดเรกทอรีการทำงานให้ใช้คำสั่ง maven เพื่อดาวน์โหลดแพ็คเกจ JAR ที่แอปพลิเคชันต้องการจากนั้นเพิ่มไฟล์แหล่งที่มาของแอปพลิเคชันสำหรับการรวบรวม ด้วยวิธีนี้ตราบใดที่ POM.XML ไม่ได้รับการอัปเดตแพ็คเกจ JAR ที่พึ่งพาจะไม่ถูกดาวน์โหลดอีกครั้งซึ่งสามารถเร่งความเร็วในการสร้างภาพได้อย่างมาก
เราสามารถรวบรวมแอปพลิเคชันผ่านคำสั่งต่อไปนี้
Docker build -t builder -img -f dockerfile.build
การรวบรวมแอปพลิเคชันแยกต่างหากและการสร้างภาพนักเทียบท่า
สำหรับภาษาที่รวบรวมแบบคงที่เรามักจะต้องแยกกระบวนการรวบรวมแอปพลิเคชันออกจากกระบวนการก่อสร้างกระจก มีข้อควรพิจารณาหลักสองประการ:
เราสามารถคัดลอกผลการรวบรวมแอปพลิเคชันจากอิมเมจนักเทียบท่าดังนี้
Docker build -t builder -img -f dockerfile.build .docker create -name builder builder -imgdocker cp builder:/usr/src/app/target ./target
ในเวลานี้ผลลัพธ์ของการก่อสร้าง Maven จะถูกคัดลอกไปยังไดเรกทอรีย่อย "เป้าหมาย" ของไดเรกทอรีปัจจุบัน
หลังจากนั้นเราสามารถใช้ DockerFile อื่นเพื่อสร้างภาพแอปพลิเคชัน ฉันจะไม่เข้าไปดูรายละเอียดถ้าฉันมีพื้นที่ จำกัด
สรุป
บทความนี้ใช้ Maven เป็นตัวอย่างในการแนะนำเทคนิคทั่วไปสำหรับ Docker ในการสร้างแอปพลิเคชัน
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น