هناك مقالة Getting Start على موقع Spring الرسمي ، والذي يقدم كيفية استخدام Docker لنشر تطبيقات Boot Spring. إنه مفصل تمامًا ، ولكن لم يتم ذكر بعض التفاصيل ، ودليل إدخال الموقع الرسمي في النسخة الإنجليزية. دعنا نعيد تنظيمه وتسجيله هنا ، كمرجع للأصدقاء مع اللغة الإنجليزية الفقراء ، وترك نفسك مذكرة.
يحضر
الأدوات المطلوبة وبيئة التشغيل:
إنشاء مشروع
بادئ ذي بدء ، تحتاج إلى إنشاء مشروع التمهيد الربيع. SPRING TOOL SUITE و Intellij Idea تأتي مع المكونات الإضافية لإنشاء. هناك طريقة أخرى لإنشائها من http://start.spring.io/. يوصى بهذه الطريقة. بعد ملء Group Id Artifact Id في النموذج ، انقر فوق زر إنشاء المشروع لإنشاءه واستيراد المشروع الذي تم تنزيله في IDE المفضلة لديك.
قم بتعديل ملف pom.xml وأضف Docker-Maven-Plugin:
<؟ xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" <Domodversion> 4.0.0 </modelversion> <rougiD> org.matrixStudio.springBoot </rougeid> <intifactid> docker </suntifactid> <sored> 0.0.1-snapshot </splist> <backaging> jar </packaging> docker </name> <speciver <roupl> org.springframework.boot </groupId> <StifactId> Spring-boot-starter-parent </artifactId> <الإصدار> 1.5.2.Release </version> <siredPath/> <!-Lookup Parent from ropository-> </slient> <parties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> </properties> <ependencies> <redence> <roupiD> org.springframework.boot </rougeid> <intifactid> spring-boot-starter-web </stifactid> </redenced> <redenced> <roupiD> org.springframework.boot </groupid> <scope> test </scope> </sependency> </rependencies> <build> <uccedins> <roupiD> org.springframework.boot </rougiD> <tringtifactid> spring-boot-maven-plugin </stifactid> </sultiin> <! <StifactId> docker-maven-plugin </artifactId> <الإصدار> 0.4.3 </version> <figupuration> <ImageName> $ {docker.image.prefix}/$ {project.artifactid} </ishordaame> <Cirlive> $ {project.build.directory} </directory> <supture> $ {project.build.finalname} .jar </incluverيتم استخدام المكون الإضافي Docker-Maven-Plugin لبناء مشاريع التمهيد الربيعي في صور Docker:
افتح ملف DockerApplication.java وقم بتعديله إلى المحتوى التالي:
package org.matrixstudio.springboot ؛ استيراد org.springframework.boot.springapplication ؛ استيراد org.springframework.boot.autoconfigure.springbootapplication ؛ استيراد org.springframework.web.bind.annotation.requestmapplication ؛ org.springframework.web.bind.annotation.restController ؛@springBootApplication@restControllerPublic class dockerapplication {REquestMapping ("/") public string home () {return "Hello Docker World" ؛ } public static void main (string [] args) {springapplication.run (dockerapplication.class ، args) ؛ }} تجميع وتشغيل
قم بتشغيل مشروع Boot Spring من خلال تنفيذ الأمر التالي:
حزمة mvn && java -jar target/docker-0.0.1-snapshot.jar
افتح المتصفح وأدخل http://localhost:8080 . إذا ظهر "Hello Docker World" ، فهذا يعني أن الجري ناجح.
ملاحظة: عند تشغيل الأمر أعلاه ، تحتاج إلى تنزيل الكثير من حزم التبعية من مستودع Maven الرسمي. الشبكة المحلية ليست مستقرة وسرعة التنزيل بطيئة. يمكنك التفكير في استخدام موقع مرآة يوفره طرف ثالث ، مثل مستودع Maven Mirror من Alibaba. أضف التكوين التالي إلى pom.xml:
<project xmlns = "http://maven.apache.org/pom/4.0.0" http://maven.apache.org/xsd/maven-4.0.0.xsd "> <Dodeversion> 4.0.0 </modelversion> <roupiD> org.matrixStudio.springBoot </rougaid> <trontifactid> docker </artifactid> التبعيات-> ...... <!-build-> ...... <!-aliyun ropository-> <ropository> <id> central </id> <name> aliyun </ame> <Url> http://maven.aliyun.com/nexus/content/groups/public//url> </ropository> </ropository> </ropository> </project>
مشروع الحاويات
أولاً ، تأكد من تثبيت Docker على جهازك. إذا تم تثبيت Docker الخاص بك على خادم Linux ، فأنت بحاجة إلى تحميل مشروع Boot Spring أعلاه على الخادم. تفترض الخطوات التالية أنك تعمل على بيئة Linux.
إنشاء dockerfile
يستخدم Docker ملفًا يسمى Dockerfile لتحديد طبقة الصورة ، لذلك نحتاج أولاً إلى إنشاء ملف Dockerfile وتنفيذ الأمر التالي لإنشاء ملف Dockerfile :
sudo tee src/main/docker/dockerfile <<-'eof'from frolvlad/alpine-oraclejdk8: slimvolume/tmpadd docker-0.0.1-snapshot.jar app.jarrun sh -c' touch/jar'env java_opts = " $ java_opts -djava.security.egd = ملف:/dev/./ urandom -jar /app.jar
دعونا نشرح الأمر أعلاه تقريبًا:
بناء صورة Docker
قم بتشغيل الأمر التالي لإنشاء صورة Docker:
حزمة MVN Docker: Build
بعد اكتمال البناء ، قم بتشغيل الأمر التالي لعرضه:
صور سوكر سوكر
النتيجة هي:
تم إنشاء معرف صورة علامة المستودع
Springio/Docker أحدث 7E2BA2F7E81E منذ 2 دقيقة 195 ميجا بايت
frolvlad/alpine-oraclejdk8 slim 00d8610f052e منذ 4 أيام 167 ميجا بايت
يمكنك أن ترى أن الصورة التي بنيناها قد ظهرت ، والخطوة التالية هي تشغيل الصورة.
تشغيل صورة Docker
قم بتنفيذ الأمر التالي لتشغيل صورة Docker المدمجة في الخطوة السابقة:
Sudo Docker Run -P 8080: 8080 -T Springio/Docker
إذا لم يحدث شيء غير متوقع ، فسترى الإخراج التالي:
. ____ _ __ _ /// / ___'_ __ _ (_) _ __ __ __ _ / / / / (() / ___ | '_ |' _ | .__ || | _ | | _ | | _ | | _/__ ، | / / / / / / ===================================================== ____ / = / _ / _ / :: spring boot :: (v1.5.2. dockerapplication v0.0.1-snapshot على 00eed53e6928 مع pid 6 ( /app.jar بدأها الجذر في /) 2017-03-08 03: 34: 59.445 info 6 --- [main] omspringboot.dockerapplication: لا توجد مجموعة ملفات نشطة ، وتراجع عن ملفات تعريف default: info 6 --- [main] cationconfigembeddedwebapplicationContext: indg.springframework.boot.context.embedded.annotationConfigpledDedweblicationContext@4b9af9a9 جذر السياق هرمي التسلسل 2017-03-08 03: 35: 03.755 info 6 --- [MAIN] SBCETTOMCATEMBEDDEDServletContainer: tomcat تهيئة مع المنفذ (s): 8080 (http) 2017-03-08 03: 35: 03.807 info 6- : بدء خدمة tomcat2017-03-08 03: 35: 03.821 info 6 --- [main] org.apache.catalina.core.standardEngine: بدء تشغيل المحرك servlet: apache tomcat/8.5.112017-08 03: 35: 04.042 info 6 --- : تهيئة الربيع المدمجة webapplicationContext2017-03-08 03: 35: 04.043 info 6 --- OST-BWServlet.ServleTregistrationBean: رسم خرائط servlet: 'Dispatcherservlet' إلى [/] 2017-03-08 03: 35: 04.455 info 6 --- 03: 35: 04.457 info 6 --- [ost-startstop-1] osbwServlet.FilterRegistrationBean: Mapping Filter: 'HiddenHttpMethodfilter' to: [/*] 2017-03-08 03: 35: 04.468 info 6- "httpputformContentFilter" إلى: [/*] 2017-03-08 03: 35: 04.468 info 6 --- SWSMMAREQUESTMAPPINGHALDLERADADAPTER: البحث عن controlleradvice: org.springframework.boot.context.embedded.annotationConfigMedDedDedWebPlicationContext@4b9af9a9: تاريخ بدء التشغيل [Wed Mar 08 03:34:59 GMT 2017] ؛ جذر السياق هرمي التسلسل 2017-03-08 03: 35: 05.390 info 6 --- [MAIN] --- [MAIN] SWSMMAREQUESTMAPPINGHALDLERMPAPPING: تم تعيين "{[/error] ، ينتج = [text/html]}" على org.springframework.web.servlet.modelandview org.springframework.boot.autoconfigure.web.basicerrorcontroller.errorhtml (javax.servlet.http.httpservletrequest ، javax.servlet.http.httpservlesponse) 2017-08 03: 35: 05.04 SWSMMAREQUESTMAPPINGHANDLERMAPPAPPIPPAPPAPPING "{[/error]}" على org.springframework.http.reSponseentity <java.util.map <java.lang.string ، java.object org.springframework.boot.autoconfigure.web.basicerrorcontroller.error (javax.servlet.http.httpservletrequest) 2017-03-08 03: 35: 05.512 info 6 --- معالج النوع [class org.springframework.web.servlet.resource.ResourceHttPrequestHandler] 2017-03-08 03: 35: 05.512 info 6 --- org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-03-08 03: 35: 05.639 info 6 --- org.springframework.web.servlet.resource.resourcehttprequesthandler] 2017-03-08 03: 35: 06.019 info 6 --- SBCETTOMCATEMBEDDEDSERVLETCONTAINER: بدأ Tomcat على المنفذ (S): 8080 (HTTP) 2017-03-08 03: 35: 06.183 Info 6 --- 03: 35: 56.728 Info 6 --- [Nio-8080-Exec-1] Occc [tomcat]. [localhost]. [/] Frameworkservlet 'Dispatcherservlet': intivalization chistract2017-03-08 03: 35: 56.774 info 6 ---قم بتنفيذ الأمر التالي لعرض حاوية Docker قيد التشغيل:
Sudo Docker PS
يمكنك أن ترى أن هناك حاوية Docker تعمل:
أوامر صورة معرف الحاوية إنشاء منافذ الحالة التي تم إنشاؤها names00eed53e6928 Springio/Docker
الآن أدخل http: // localhost: 8080 لعرض نتيجة "Hello Docker World".
إذا كنت ترغب في إيقاف الحاوية ، يمكنك تنفيذ الأمر التالي:
Sudo Docker Stop 00e
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.