1. ความเจ็บปวดชี้ให้สามารถแก้ไขได้
1. ไม่จำเป็นต้องสร้างสภาพแวดล้อมการพัฒนาแบ็คเอนด์
2. การเปลี่ยนแปลงในสภาพแวดล้อมการพัฒนาจำเป็นต้องมีการเปลี่ยนกระจกเป็นการอัปเดตแบบซิงโครนัสเท่านั้น
3. ไม่จำเป็นต้องใช้เครื่องมือ IDE เช่น Eclipse
4. โครงการพัฒนาสวิตช์
2. โซลูชั่น
ใช้นักเทียบท่าเพื่อเริ่มภาพอูบุนตูสร้างสภาพแวดล้อมการพัฒนาที่ต้องการโดยโครงการในคอนเทนเนอร์ติดตั้งรหัสท้องถิ่นลงในคอนเทนเนอร์ใช้ปริมาณการเมานต์เพื่อรวบรวมและเรียกใช้รหัสโดยใช้สภาพแวดล้อมในคอนเทนเนอร์และโฮสต์เข้าถึงบริการในภาชนะผ่านพอร์ต
3. เกี่ยวกับนักเทียบท่า
เข้าใจ Docker
บทความนี้ไม่ได้ตั้งใจที่จะอธิบายความรู้เกี่ยวกับนักเทียบท่าอย่างละเอียด มีบทความที่เกี่ยวข้องมากมาย หากคุณสนใจคุณสามารถอ่านหนังสือเล่มนี้ได้ ฉันถูก จำกัด เฉพาะการพัฒนาเครื่องมือนี้สำหรับการใช้ Docker หากมีสิ่งผิดพลาดใด ๆ โปรดชี้ให้เห็น
เครื่องเร่งความเร็ว
ตัวเร่งความเร็ว Daocloud
4. สร้างสภาพแวดล้อม
หลังจากดาวน์โหลดและติดตั้ง Docker เราสามารถเริ่มต้นได้ สิ่งที่เรากำลังพูดถึงด้านล่างคือ Java แต่ก็ใช้กับสภาพแวดล้อมอื่น ๆ
รับภาพ Ubuntu
Docker Pull Ubuntu
หลังจากเสร็จสิ้นแล้วให้ดำเนินการ docker images และคุณจะเห็นภาพที่ได้รับการปรับปรุงใหม่
ป้อนคอนเทนเนอร์
Docker Run -it Ubuntu
5. ติดตั้งซอฟต์แวร์และกำหนดค่าตัวแปรสภาพแวดล้อม
อัปเดตแรก apt-get
การอัปเดตที่เหมาะสม
ถัดไปคุณสามารถใช้ apt-get install * เพื่อติดตั้งซอฟต์แวร์ที่คุณต้องการ ถ้าไม่ดาวน์โหลดแพ็คเกจการติดตั้งและติดตั้งด้วยตัวเอง ในเวลาเดียวกันกำหนดค่าตัวแปรสภาพแวดล้อม ฉันจะไม่เข้าไปดูรายละเอียดที่นี่
VI. เริ่มบริการ
ป้อนไดเรกทอรี Tomcat เริ่มบริการและเปิด 0.0.0.0:8080 ในเบราว์เซอร์ หากไม่มีอะไรผิดปกติคุณจะเห็นว่าเซิร์ฟเวอร์ไม่สามารถเข้าถึงได้ นี่เป็นเพราะบริการที่เราเพิ่งเริ่มต้นอยู่ใน Docker หากเราไม่ได้ดำเนินการบางอย่างเราจะไม่สามารถเข้าถึงบริการภายใน Docker ได้
ดังนั้นเรามาออกจากคอนเทนเนอร์ก่อน
การออก
หลังจากออกแล้วให้ดำเนินการ docker ps -a และคุณจะเห็นว่าคอนเทนเนอร์ที่เรายังอยู่ตอนนี้ยังอยู่ที่นั่น คนส่วนใหญ่ที่ยังใหม่กับ Docker จะทำผิดพลาดนี้และคิดว่าภาชนะจะถูกทำลายหลังจากออกจากคอนเทนเนอร์ แต่ในความเป็นจริงมันไม่ใช่กรณี
หากเราต้องการป้อนคอนเทนเนอร์นี้อีกครั้งเราสามารถเรียกใช้คำสั่งต่อไปนี้ได้โปรดคัดลอกรหัสคอนเทนเนอร์ของคุณเอง
Docker Exec -it Id Id Bash
แม้ว่าคอนเทนเนอร์จะยังคงทำงานอยู่ แต่ก็ยังไม่คงอยู่ เพื่อป้องกันไม่ให้เกิดขึ้นมันจะคงอยู่โดยเร็วที่สุดหลังจากที่เราแก้ไขเนื้อหาในคอนเทนเนอร์
Docker Commit Id Id Java
คำสั่งนี้หมายถึงการคงไว้ซึ่งคอนเทนเนอร์ของเราเป็นภาพใหม่ที่เรียกว่า Java
เริ่มภาพที่สร้างขึ้นใหม่นี้
Docker Run -it -p 8080: 8080 Java
ให้ความสนใจกับการเปลี่ยนแปลงในคำสั่งเริ่มต้นของเราและมีคำสั่ง -p เพิ่มเติม คำสั่งนี้หมายถึงการเปิดเผยพอร์ต 8080 ในคอนเทนเนอร์ไปยังโฮสต์
เยี่ยมชม 0.0.0.0:8080 อีกครั้งและเราสามารถเห็นแมวตัวน้อยมันน่ารักมาก
ฉันควรทำอย่างไรถ้าคอนเทนเนอร์ยังคงครอบครองความทรงจำของเราอยู่ตอนนี้? ฆ่าเขา
Docker RM Container ID
ขั้นตอนแรกของเราเสร็จสมบูรณ์และต่อไปเราจะรวมรหัสของเรา
7. รหัสรวม
คอนเทนเนอร์ที่เราเพิ่งเริ่มต้นคือกล่องดำอิสระอย่างสมบูรณ์ซึ่งไม่มีความคิดว่ารหัสของเราอยู่ที่ไหนดังนั้นเราจึงต้องใช้ระดับเสียงเมานต์ของ Docker เพื่อให้โฮสต์และคอนเทนเนอร์สามารถแชร์ไดเร็กทอรีได้
ขออภัยเราจะฆ่าภาชนะที่เราเพิ่งเริ่มต้นอีกครั้ง
Docker Run -it -v/users/name/web:/opt/root -p 8080: 8080 Java
คำสั่งเริ่มต้นของเราได้เพิ่มสมาชิกใหม่ -v ความหมายของคำสั่งนี้คือการแขวนไดเรกทอรีเว็บภายใต้ไดเรกทอรีรูทของผู้ใช้ลงในคอนเทนเนอร์ในไดเรกทอรี /opt /root
หลังจากเข้าสู่ไดเรกทอรีเราจะพบว่าไฟล์ในเว็บไดเรกทอรีกำลังนอนอยู่ข้างในอย่างเงียบ ๆ เช่น Mary Sue ที่นอนหลับมาหลายปีกำลังรอการโทรของคุณ
เริ่มโทร.
MVN Clean Install -u -plocal -dskiptests
หลังจากระยะเวลาหนึ่งเราจะเห็นพร้อมท์สำหรับบรรจุภัณฑ์ที่ประสบความสำเร็จ คัดลอกแพ็คเกจสงครามไปยังไดเรกทอรี Tomcat Webapps และคุณสามารถเข้าถึงโครงการของคุณได้
เมื่อมาถึงจุดนี้โครงการของเราก็เริ่มทำงาน แต่มีปัญหาหลายประการ
1. คุณต้องเรียกใช้คำสั่งที่ยาวเช่นนี้ทุกครั้งหรือไม่? ลำบากมาก
2. ทุกครั้งที่คุณเปลี่ยนรหัสจะต้องมีการบรรจุใหม่ซึ่งใช้เวลานาน
3. จะอ่านบันทึกการเริ่มต้นได้อย่างไร? ฉันควรทำอย่างไรถ้าฉันรายงานข้อผิดพลาด
4. วิธีแก้ไขไฟล์เทมเพลตส่วนหน้าโดยไม่ต้องรีสตาร์ทบริการ?
จากปัญหาเหล่านี้เราต้องเขียนสคริปต์เพื่อแก้ปัญหา
8. เชลล์สคริปต์
สคริปต์จะให้คำแนะนำต่อไปนี้
-y Update Maven แพ็คเกจคอมไพล์แพคเกจแพคเกจ-รีลีสเริ่มต้น Tomcat
-p Compile-Package-release-start tomcat
-r รีสตาร์ท tomcat
-c recompile ไฟล์ java - release - เริ่ม tomcat
-w ฟังไฟล์ VM, การซิงโครไนซ์ 5S เริ่มต้นหนึ่งครั้ง
-l ดูบันทึก Tomcat
-H ช่วย
# ตัวแปรที่จำเป็นต้องเป็น เปลี่ยน######################################################## - - - - - - - ที่อยู่เริ่มต้นโครงการ tom_root = "$ {tom_url}/webapps"# ช่วงเวลาการฟังไฟล์, หน่วย wt = 5# คัดลอก vmwc_vm = "src/main/webapp/web-inf/tpl/usr/share/tomcat7/webapps/root/web-inf/"# copy /usr/share/tomcat7/webapps/root/web -inf/" # วิธีการทั่วไป # # ใช้ฟังก์ชันแพ็คเกจใหม่ newwar () { # ลบแพ็คเกจเก่า rm -rf $ {tom_root}/* # ย้ายแพ็คเกจสงคราม mv $ {war_url} $ {tom_root} # เริ่มบริการ $ {tom_url} /bin/startup.sh # ป้อน tail log tail -f $ {tom_url} /logs/catalina.out} # การประมวลผลคำสั่งในขณะที่ getopts ": yprcwlh" case -hev -used - Newwar รีสตาร์ท ;; "P") Echo "Repackage" MVN Clean Package -p $ {dev} -dskiptests newwar รีสตาร์ท ;; "r") echo "รีสตาร์ท Tomcat" รีสตาร์ท ;; "C") echo "repompile และรีสตาร์ทบริการ" MVN Clean Compile -p $ {dev} -dskiptests cp -r $ {wc_java} รีสตาร์ท ;; "W") echo "เริ่มฟังไฟล์ VM" # ฟังดู vm watch -n $ {wt} cp -r $ {wc_vm} ;; "l") echo "เข้าสู่ระบบ" # ฟัง vm tail -f $ {tom_url} /logs/catalina.out ;; "H") Echo "-y Update Maven แพ็คเกจคอมไพล์แพ็คเกจ -แพคเกจ -รีลีส -รีลีสเริ่มต้นบริการครบวงจร" echo "-p คอมไพล์และการเปิดตัวแพ็คเกจเริ่มต้นบริการแบบครบวงจร" echo "-r รีสตาร์ท tomcat" echo "-c re -java ไฟล์และการรีสตาร์ทบริการ" echo " - ESAC 9. ส่งเสริมให้ทีม
หลังจากสามขั้นตอนข้างต้นเครื่องมือของเราถูกสร้างขึ้น แต่คนอื่นจะใช้มันได้อย่างไร
Docker ให้บริการคลาวด์ หากภาพของเรามีขนาดเล็กพอเราสามารถผลักภาพไปยังคลาวด์เพื่อให้ผู้อื่นดาวน์โหลดและเรียกใช้ แต่ภาพของเราเกิน 1G - - ดังนั้นเราจึงไม่สามารถใช้วิธีนี้ได้
Docker บันทึก java -o ./java.tar
ใช้คำสั่งด้านบนเพื่อคงไว้ซึ่งรูปภาพไปยังไฟล์ท้องถิ่น java.tar จากนั้นถ่ายโอนไปยังเครื่องจักรของเพื่อนร่วมชั้นคนอื่นด้วยวิธีอื่น เราใช้ Airdrop ไม่กี่นาที
Docker Load -i java.tar
นักเรียนคนอื่นสามารถใช้คำสั่งนี้เพื่อโหลดภาพของเราลงในนักเทียบท่าของเขา
จากนั้นรวมเชลล์สคริปต์เข้ากับไดเรกทอรีรากของโครงการและคุณสามารถใช้มันได้อย่างมีความสุข
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะช่วยในการศึกษาหรือทำงานของคุณ หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร