บทความนี้แนะนำวิธีการใช้ปลั๊กอิน Maven เพื่อสร้างภาพ Docker ฉันจะแบ่งปันกับคุณ รายละเอียดมีดังนี้:
เครื่องมือ
หากคุณต้องการทำงานที่ดีคุณต้องลับเครื่องมือของคุณก่อน หลังจากการวิจัยปลั๊กอิน Maven Docker ต่อไปนี้ได้เข้าสู่การมองเห็นของฉัน:
| ชื่อปลั๊กอิน | ที่อยู่อย่างเป็นทางการ |
|---|---|
| Docker-Maven-Plugin | https://github.com/spotify/docker-maven-plugin |
| Docker-Maven-Plugin | https://github.com/fabric8io/docker-maven-plugin |
| Docker-Maven-Plugin | https://github.com/bibryam/docker-maven-plugin |
ผู้เขียนเลือกอันแรกจากสามมิติ: ดาวความสะดวกในการใช้งานเอกสารและความถี่อัปเดต
สร้างภาพนักเทียบท่าด้วยปลั๊กอิน
ใช้ง่าย
ลองใช้โครงการก่อนหน้านี้: Microservice-Discovery-Eureka เป็นตัวอย่าง:
เพิ่มย่อหน้าต่อไปนี้ใน pom.xml
<สร้าง> <ปลั๊กอิน> <!-ปลั๊กอิน Maven ของ Docker, เว็บไซต์ทางการ: https://github.com/spotify/docker-maven-plugin-> <plugin> <loupid> com.spotify </groupid> สอดคล้องกับ [a-z0-9-_. ปกติ] มิฉะนั้นการสร้างจะไม่สำเร็จ-> <!-ดู: https://github.com/spotify/docker-maven-plugin ชื่อที่เก็บข้อมูลที่ไม่ถูกต้อง <intryPoint> ["java", "-jar", "/$ {project.build.finalname} .jar"] </entrypoint> <sroves> <srovesous> <srovesous> <targetath>/</targetath> <ไดเรกทอรี> $ {project.build.directory} </directory> </plugin> </plugins> </ufferive> ดำเนินการคำสั่ง:
MVN Clean Package Docker: Build
เราจะพบว่าคอนโซลมีบางอย่างดังต่อไปนี้:
[ข้อมูล] การสร้างภาพ Microservice-Discovery-Eurekastep 1: จาก Javapulling จาก Library/Javadigest: Sha256: 581a4afcbbedd8fdf194d597CB5106C1F91463024FB3A49A2D9F0251651665 ---> EA40C858F006STEP 2: เพิ่ม /MICROSERVICE-DISCOVERICE-EUREKA-0.0.1-SNAPSHOT.JAR // ---> D1C174083BCAREMOVING Intermediate Container 91913D847C20STEP 3 /microservice-discovery-eureka-0.0.1-snapshot.jar ---> ทำงานใน 0f2aeccdfd46 ---> D57B027CA65AREMOVING อินเตอร์เน็ต 0F2AECCDFD46 - -
ขอแสดงความยินดีการก่อสร้างประสบความสำเร็จ
เราดำเนินการ Docker Images และพบว่าภาพได้ถูกสร้างขึ้นสำเร็จ:
ID ภาพแท็ก repository สร้าง Sizemicroservice-Discovery-Eureka ล่าสุด D57B027CA65A ประมาณหนึ่งนาทีที่ผ่านมา 681.5 MB
เริ่มกระจก
Docker Run -p 8761: 8761 Microservice-Discovery-Eureka
เราจะพบว่าภาพนักเทียบท่าจะเริ่มต้นอย่างรวดเร็ว
การทดสอบการเข้าถึง
เยี่ยมชม http: // docker โฮสต์ IP: 8761 เพื่อดูอินเตอร์เฟสยูเรก้าตามปกติ
สร้างด้วย dockerfile
วิธีการข้างต้นเป็นวิธีที่ง่ายที่สุด หลายครั้งที่เรายังต้องสร้างมันด้วยความช่วยเหลือของ DockerFile ก่อนอื่นเราสร้างไฟล์ DockerFile ใน/Microservice-Discovery-Eureka/Src/Main/Docker Directory
จาก java: 8volume/tmpadd microservice-discovery-eureka-0.0.1-snapshot.jar app.jarrun bash -c 'touch /app.jar'expose 9000Entrypoint ["java"
แก้ไข pom.xml
<สร้าง> <ปลั๊กอิน> <!-ปลั๊กอิน Maven ของ Docker, เว็บไซต์ทางการ: https://github.com/spotify/docker-maven-plugin-> <plugin> <loupid> com.spotify </groupid> สอดคล้องกับ [a-z0-9-_. ปกติ] มิฉะนั้นบิลด์จะไม่สำเร็จ-> <!-ดู: https://github.com/spotify/docker-maven-plugin ชื่อที่เก็บข้อมูลที่ไม่ถูกต้อง ... DockerFile ตั้งอยู่-> <DockerDirectory> $ {project.basedir}/src/main/docker </dockerdirectory> <sroves> <sroves> <sresource> </configuration> </plugin> </plugins> </uild>ขั้นตอนอื่น ๆ เหมือนกัน ด้วยวิธีนี้คุณสามารถใช้ DockerFile เพื่อสร้างภาพนักเทียบท่า
กด Image Docker บน DockerHub
First Modify Maven การตั้งค่าไฟล์การกำหนดค่าส่วนกลางของ Maven และเพิ่มย่อหน้าต่อไปนี้
<servers> <server> <id> Docker-Hub </id> <ผู้ใช้> ชื่อผู้ใช้ DockerHub ของคุณ </serventAME> <password> รหัสผ่าน DockerHub ของคุณ </รหัสผ่าน> <การกำหนดค่า> <email> DockerHub Mailbox </email> </การกำหนดค่า> </เซิร์ฟเวอร์>
สร้าง repo บน DockerHub
โครงการ pom.xml ได้รับการแก้ไขต่อไปนี้: โปรดทราบว่าเส้นทางของ imagename ควรสอดคล้องกับเส้นทางของ repo
<สร้าง> <ปลั๊กอิน> <!-ปลั๊กอิน Maven ของ Docker, เว็บไซต์ทางการ: https://github.com/spotify/docker-maven-plugin-> <plugin> <loupid> com.spotify </groupid> สอดคล้องกับ [a-z0-9-_. ปกติ] มิฉะนั้นการสร้างจะไม่สำเร็จ-> <!-ดู: https://github.com/spotify/docker-maven-plugin ชื่อที่เก็บข้อมูลที่ไม่ถูกต้อง ... <AmageName> EACDY/TEST </imagename> <!-ระบุเส้นทางที่ DockerFile ตั้งอยู่-> <DockerDirectory> $ {Project.basedir}/src/main/docker </dockerdirectory> <รวม> $ {project.build.finalname} .jar </calfies> </sursece> </sursece> <!- สองบรรทัดต่อไปนี้ใช้สำหรับ Docker Push ไปยัง DockerHub -> <serverid> Docker-Hub </ServerId> <gistryUrl> https://index.docker.io/v1/ </registryurl> </configuration> ดำเนินการคำสั่ง:
MVN Clean Package Docker: build -dpushimage
หลังจากการก่อสร้างประสบความสำเร็จเราจะพบว่าภาพนักเทียบท่าถูกส่งไปยัง DockerHub
ผลักภาพไปยังที่เก็บส่วนตัว
ในหลาย ๆ สถานการณ์เราต้องผลักกระจกไปยังที่เก็บส่วนตัว เพื่ออธิบายความครอบคลุมพื้นที่เก็บข้อมูลส่วนตัวใช้พื้นที่เก็บข้อมูลส่วนตัวที่กำหนดค่าการตรวจสอบเข้าสู่ระบบ
เช่นเดียวกับการกดไปยัง DockerHub ก่อนอื่นเราต้องแก้ไขไฟล์การกำหนดค่าส่วนกลางของ Maven ของ Maven และเพิ่มย่อหน้าต่อไปนี้
<servers> <server> <id> Docker-Registry </id> <ผู้ใช้> ชื่อผู้ใช้ DockerHub ของคุณ </serventAme> <password> รหัสผ่าน DockerHub ของคุณ </รหัสผ่าน> <การกำหนดค่า> <email> DockerHub Mailbox </อีเมล> </การกำหนดค่า>
เปลี่ยน pom.xml ของโครงการเป็นสิ่งต่อไปนี้
<plugin> <splould> com.spotify </groupId> <ratifactid> Docker-Maven-Plugin </ArtifactId> <Sersion> 0.4.12 </เวอร์ชัน> <การกำหนดค่า> <! <conkerDirectory> $ {project.basedir}/src/main/docker </dockerdirectory> <sroves> <srovesous> <sroves> <srovesous> <srovespath>/</targetath> <ไดเรกทอรี> $ {project.build.directory} </directory> maven configuration settings.xml-> <serverid> docker-registry </serverid> </การกำหนดค่า> </plugin> ดำเนินการ:
MVN Clean Package Docker: build -dpushimage
รอสักครู่แล้วคุณจะประสบความสำเร็จ
หากคุณต้องการดาวน์โหลดภาพจากเซิร์ฟเวอร์ส่วนตัวให้ดำเนินการ:
Docker เข้าสู่ระบบ reg.itmuch.com # จากนั้นป้อนหมายเลขบัญชีและรหัสผ่าน Docker Pull Reg.itmuch.com/test-pull-registry
ผูกปลั๊กอินเพื่อดำเนินการในเฟส
ในหลาย ๆ สถานการณ์เรามีความต้องการดังกล่าวเช่นเมื่อดำเนินการแพ็คเกจ MVN Clean เราจะสร้างอิมเมจนักเทียบท่าให้เราโดยอัตโนมัติ โอเคไหม คำตอบคือใช่ เราเพียงแค่ต้องผูกเป้าหมายของปลั๊กอินกับเฟสที่แน่นอน
เฟสและเป้าหมายที่เรียกว่าสามารถเข้าใจได้ดังนี้: รูปแบบคำสั่ง maven คือ: MVN เฟส: เป้าหมายตัวอย่างเช่นแพ็คเกจ MVN Docker: สร้างจากนั้นแพ็คเกจและนักเทียบท่าจะเป็นทั้งสองเฟสและการสร้างคือเป้าหมาย
นี่คือตัวอย่าง:
ก่อนกำหนดคุณสมบัติ:
<properties> <docker.image.prefix> reg.itmuch.com </docker.image.prefix> </premerties>
การกำหนดค่าปลั๊กอิน:
<uffect> <plugins> <plugin> <molin> <roupId> com.spotify </groupId> <ratifactid> Docker-Maven-Plugin </artifactid> <Executions> <EXECUTION> <ID> Build-Image </id> <pare> <AmageName> $ {docker.image.prefix}/$ {project.artifactid} </imagename> <saseimage> java </baseimage> <ententpoint> ["java", "-jar", "/$ {project.build.finalname} .jar" <Sirectory> $ {project.build.directory} </directory> <calfine> $ {project.build.finalname} .jar </cultes> </sursece> </resources> </การกำหนดค่า> </plugin>ดังกล่าวข้างต้นเราแค่ต้องเพิ่ม:
<EXCUTIONS> <EXECUTION> <ID> BULD-IMAGE </ID> <pare> Package </Phase> <source> <source> สร้าง </goal> </เป้าหมาย> </execution> </encutions>
แค่ทำ ตัวอย่างนี้หมายถึงเป้าหมายการสร้างของ Docker ที่ถูกผูกไว้กับเฟสแพ็คเกจ กล่าวอีกนัยหนึ่งผู้ใช้จะต้องดำเนินการแพ็คเกจ MVN เท่านั้นและเรียกใช้งาน MVN Docker โดยอัตโนมัติ: Build
ข้อยกเว้นทั่วไป
ไม่สามารถเชื่อมต่อกับ 2375 (โดยปกติจะอยู่ใน win7)
การคัดลอกรหัสมีดังนี้:
เชื่อมต่อกับ localhost: 2375 [localhost/127.0.0.1, localhost/0: 0: 0: 0: 0: 0: 0: 0: 0: 1] ล้มเหลว: การเชื่อมต่อปฏิเสธ: เชื่อมต่อ -> [ช่วยเหลือ 1]
ขั้นตอนการแก้ปัญหา:
ป้อน env
$ env: docker_tls_verify = "1" $ env: docker_host = "tcp: //192.168.99.100: 2376" $ env: docker_cert_path = "c: /users/administrator/.docker/machine/machines/default
เพิ่มการกำหนดค่าสำหรับปลั๊กอิน
<!-วิธีหนึ่งในการแก้ปัญหาการเชื่อมต่อกับ LocalHost: 2375 อย่าลืมสอดคล้องกับ envker-machine env-> <Ockerhost> https://192.168.99.100:2376 <OckerCertPath> C: /users/administrator/.docker/machine/machines/default </ockercertpath>
หลังจากการแก้ไขการกำหนดค่าปลั๊กอินจะกลายเป็น:
<plugin> <splould> com.spotify </groupId> <ratifactid> Docker-Maven-Plugin </artifactid> <sersion> 0.4.12 </เวอร์ชัน> <การกำหนดค่า> <magename> eacdy/test </imagename> วิธีแก้ปัญหาการเชื่อมต่อกับ LocalHost: 2375 อย่าลืมสอดคล้องกับ envker-machine env-> <OckerHost> https://192.168.99.100:2376 </conkerhost> <surese> <pretarmentath>/</targetPath> <ไดเรกทอรี> $ {Project.build.directory} </irectory> <condent> $ {Project.build.finalName} .jar </caluve> </sorsors> </surses> <!- สองบรรทัดต่อไปนี้ใช้ -> <serverid> Docker-Hub </ServerId> <gistryUrl> https://index.docker.io/v1/ </registiRyUrl> </การกำหนดค่า> </plugin> การอ้างอิง: https://github.com/spotify/docker-maven-plugin/issues/116
เคล็ดลับ
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น