تقدم هذه المقالة طريقة استخدام المكون الإضافي Maven لإنشاء صور Docker. سوف أشاركها معك. التفاصيل كما يلي:
أداة
إذا كنت ترغب في القيام بعمل جيد ، فيجب عليك أولاً شحذ أدواتك. بعد البحث ، دخلت المكونات الإضافية التالية Docker Maven في مجال رؤيتي:
| اسم البرنامج المساعد | العنوان الرسمي |
|---|---|
| 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 |
اختار المؤلف أول واحد من ثلاثة أبعاد: النجوم ، وثيقة سهولة الاستخدام وتحديث تردد.
بناء صور Docker مع الإضافات
استخدام بسيط
لنأخذ المشروع السابق: Microservice-Discovery-Eureka كمثال:
أضف الفقرة التالية في pom.xml
<Build> <ultizins> <!-المكون الإضافي لـ Docker's Maven ، الموقع الرسمي: https://github.com/spotify/docker-maven-plugin-> <sclosin> <roupiD> com.spotify </groupid> <shifaCtid> docker-maven-plugin </artifactid> <sople> منتظم [A-Z0-9-_.] ، وإلا فلن يكون البناء ناجحًا-> <!-راجع: https://github.com/spotify/docker-maven-plugin اسم مستودع غير صالح ... فقط [A-Z0-9-_.]. <rethingpoint> ["java" ، "-jar" ، "/$ {project.build.finalname} .jar"] </enterpoint> <srossial> <sropertar> <targetPath>/</targetpath> <cironsory> $ {project.build.directory} </directory> <supture> {project. </sultwin> </sullsins> </build> تنفيذ الأمر:
MVN Clean Package Docker: Build
سنجد أن وحدة التحكم لديها ما يلي:
[معلومات] بناء صورة صورة microservice-discovery-eurekastep 1: من javapulling من المكتبة/javadigest: sha256: 581a4afcbbedd8fdf194d597cb5106c1f91463024fb3a49a2d9f025165eb67 ---> ea40c858f006step 2: add /microservice-discovery-eureka-0.0.1-snapshot.jar // ---> d1c174083bcaremoving الوسيطة الوسيطة 91913d847c20step 3: نقطة الدخول java-jar. /microservice-discovery-eureka-0.0.1-snapshot.jar ---> التشغيل في 0f2aeccdfd46 ---> d57b027ca65aremoving contioner [infoge-efice-discercer-eficker-eficker-eficker-eficker- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
مبروك ، كان البناء ناجحًا.
نقوم بتنفيذ صور Docker ونجد أن الصورة قد تم بناؤها بنجاح:
معرف صورة العلامة المستودع تم إنشاؤه SizemicRoservice-Discovery-Eureka أحدث D57B027CA65A منذ حوالي 681.5 ميجابايت
ابدأ المرآة
Docker Run -P 8761: 8761 Microservice-Discovery-Eureka
سنجد أن صورة Docker ستبدأ بسرعة كبيرة.
اختبار الوصول
تفضل بزيارة http: // docker host IP: 8761 لمشاهدة واجهة eureka بشكل طبيعي.
بناء مع Dockerfile
الطريقة أعلاه هي أسهل طريقة. في كثير من الأحيان ، ما زلنا بحاجة إلى بنائه بمساعدة Dockerfile. أولاً ، نقوم بإنشاء ملف dockerfile في دليل/microservice-discovery-eureka/src/main/docker.
من Java: 8volume/tmpadd microservice-discovery-eureka-0.0.1-snapshot.jar app.jarrun bash -c 'touch/app.jar'expose 9000entrypoint [-"java" ، "-djava.security.egd =/dev/.
تعديل pom.xml
<Build> <ultizins> <!-المكون الإضافي لـ Docker's Maven ، الموقع الرسمي: https://github.com/spotify/docker-maven-plugin-> <sclosin> <roupiD> com.spotify </groupid> <shifaCtid> docker-maven-plugin </artifactid> <sople> منتظم [A-Z0-9-_.] ، وإلا فلن يكون البناء ناجحًا-> <!-راجع: https://github.com/spotify/docker-maven-plugin اسم مستودع غير صالح ... فقط [a-z0-9-_]. تقع-> <ckerDirectory> $ {project.basedir}/src/main/docker </cerdedirectory> <srossial> <sropertar> <targetPath>/</targetpath> <Cironsory> $ {project.build.directory} </ </plugins> </build>الخطوات الأخرى هي نفسها. وبهذه الطريقة ، يمكنك استخدام Dockerfile لإنشاء صور Docker.
دفع صورة Docker على Dockerhub
أولاً ، قم بتعديل إعدادات ملفات التكوين العالمية لـ Maven. xml وأضف الفقرة التالية
<Ruds> <sroper> <Id> docker-hub </id> <Suername> اسم مستخدم DockerHub الخاص بك </username> <sworder> كلمة مرور DockerHub </password> <foctter> <mail> صندوق بريد DockerHub الخاص بك </البريد الإلكتروني> </configuration> </server> </servers>
إنشاء ريبو على Dockerhub
يتم تعديل Project Pom.xml إلى ما يلي: لاحظ أن مسار الاسم الخيالي يجب أن يكون متسقًا مع مسار الريبو
<Build> <ultizins> <!-المكون الإضافي لـ Docker's Maven ، الموقع الرسمي: https://github.com/spotify/docker-maven-plugin-> <sclosin> <roupiD> com.spotify </groupid> <shifaCtid> docker-maven-plugin </artifactid> <sople> منتظم [A-Z0-9-_.] ، وإلا فلن يكون البناء ناجحًا-> <!-راجع: https://github.com/spotify/docker-maven-plugin اسم مستودع غير صالح ... فقط [A-Z0-9-_]. <ImageName> eacdy/test </imageName> <!-حدد المسار الذي يوجد فيه dockerfile-> <ckerDirectory> $ {project.basedir}/src/main/docker </cerdirectory> <srosser> <sropergence> <swern> $ {project.build.finalname} .jar </include> </sroses> </srossection> <!- يتم استخدام الخطين التاليين لدفع Docker إلى DockerHub. -> <ServerId> docker-hub </serverId> <RegistryUrl> https://index.docker.io/v1/ </registryurl> </ispicturation> </spliexin> </splies> </build> تنفيذ الأمر:
MVN Clean Package Docker: Build -Dpushimage
بعد نجاح البناء ، سنجد أنه تم دفع صورة Docker إلى DockerHub.
ادفع الصورة إلى مستودع خاص
في العديد من السيناريوهات ، نحتاج إلى دفع المرآة إلى مستودع خاص. من أجل شرح الشمولية ، يستخدم المستودع الخاص مستودعًا خاصًا يقوم بتكوين مصادقة تسجيل الدخول.
تمامًا مثل الضغط على DockerHub ، نحتاج أولاً إلى تعديل إعدادات ملفات التكوين العالمية لـ Maven.
<Ruds> <sroper> <Id> docker-registry </id> <username> اسم مستخدم DockerHub الخاص بك </username> <portord>
تغيير POM.xml من المشروع إلى ما يلي ،
<Unction> <roupiD> com.spotify </groupId> <StifactId> docker-maven-plugin </artifactid> <sophy> 0.4.12 </version> <simpuration> <!-المسار هو: عنوان مستودع خاص/مسار المرايا الذي تريده-> <COKERDIRECTORY> $ {project.basedir}/src/main/docker </dockerDirectory> <srosser> <sropertar> <targetPath>/</targetpath> <cirly> $ {project.build.directory} </ إعدادات ملف التكوين. ينفذ:
MVN Clean Package Docker: Build -Dpushimage
انتظر لحظة وستكون ناجحًا.
إذا كنت ترغب في تنزيل الصورة من الخادم الخاص ، قم بتنفيذ:
Docker Login Reg.itmuch.com # ثم أدخل رقم الحساب وكلمة المرور Docker سحب reg.itmuch.com/test-pull-registry
ربط البرنامج المساعد للتنفيذ في مرحلة ما
في العديد من السيناريوهات ، لدينا مثل هذه الاحتياجات ، على سبيل المثال ، عند تنفيذ حزمة MVN Clean ، سنقوم تلقائيًا بإنشاء صورة Docker لنا. هل هو بخير؟ الجواب نعم. نحتاج فقط إلى ربط هدف البرنامج المساعد بمرحلة معينة.
يمكن فهم ما يسمى بالمرحلة والهدف على النحو التالي: تنسيق قيادة Maven هو: MVN المرحلة: الهدف ، على سبيل المثال ، MVN Package Docker: Build ، ثم ، الحزمة و Docker هما مرحلتين ، والبناء هو الهدف.
هنا مثال:
قم أولاً بتكوين الخصائص:
<Properties> <COKKER.IMAGE.PREFIX> Reg.itmuch.com </docker.image.prefix> </sfressions>
تكوين البرنامج المساعد:
<Build> <uccedins> <sucplin> <rougiD> com.spotify </groupId> <ArtifactId> docker-maven-plugin </shotifactid> <evelopmentions> <evengution> <id> build-image </id> <fase> حزمة </phase> <ImageName> $ {docker.image.prefix}/$ {project.artifactid} </filderame> <BaseImage> java </baseimage> <enterpoint> ["java" ، "-jar> ،"/$ {project.build.finalname}. <Criptory> $ {project.build.directory} </directory> <supture> $ {project.build.finalname} .jar </incluverعلى النحو الوارد أعلاه ، نحتاج فقط إلى إضافة:
<evelopments> <evelop> <id> build-image </id> <phase> package </phase> <irod> <irod> build </dile> </ford
افعل ذلك. يشير هذا المثال إلى هدف بناء Docker ، المرتبط بمرحلة الحزمة. بمعنى آخر ، يحتاج المستخدم فقط إلى تنفيذ حزمة MVN وتنفيذ MVN Docker: Build.
استثناءات شائعة
لا يمكن الاتصال بـ 2375 (عادة على Win7)
نسخة الكود كما يلي:
الاتصال بـ LocalHost: 2375 [LocalHost/127.0.0.1 ، LocalHost/0: 0: 0: 0: 0: 0: 0: 0: 1] فشل: اتصال رفض: Connect -> [تعليمات 1]
خطوات الحل:
أدخل Docker-Machine 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 ، تأكد من أن تكون متسقًا مع Docker-Machine Env--> <CokerHost>
بعد التعديل ، يصبح تكوين المكونات الإضافية:
<rector> <rougiD> com.spotify </groupId> <StifactId> docker-maven-plugin </shintifactid> <splection> 0.4.12 </version> <figuuration> <ImageName> eacdy/test </ishormename> <corkkerdirectory> $ {project.basedir}/src/docker مشكلة الاتصال بـ LocalHost: 2375 ، تأكد من أن تكون متسقًا مع Docker-Machine Env-> <ckerhost> https://192.168.99.100:2376 </cerkkerhost> <ckkercertpath> c: /users/administrator/.docker/machine/machines <DagePath>/</targetpath> <cirly> $ {project.build.directory} </directory> <supture> $ {project.build.finalname} .jar </suggens> </resource> </srossection> <!- يتم استخدام الخطين التاليين لضغط Docker إلى DockerHub. -> <ServerId> docker-hub </serverId> <RegistryUrl> https://index.docker.io/v1/ </registryUrl> </iscification> </spliexin> المرجع: https://github.com/spotify/docker-maven-plugin/issues/116
نصائح
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.