2015-03-22 18 views
36

में चल रहे टॉमकैट 8 पर जावा वेबपैप को तैनात करना मैं टॉमकैट और डॉकर के लिए काफी नया हूं - इसलिए शायद मुझे इस प्रश्न में कहीं भी टॉमकैट मौलिक याद आ रहा है।डॉकर कंटेनर

जो मैं करने की कोशिश कर रहा हूं वह एक डॉकर कंटेनर बनाता है जो स्प्रिंगबूट को सुरक्षित वेब सेवा चलाता है जो कुछ स्थिर डेटा देता है। यह सब ओएसएक्स पर चल रहा है इसलिए मैं Boot2Docker का भी उपयोग कर रहा हूं।

मैं अपने खुद के Dockerfile लिखा है कंटेनर है कि मेरे ऐप में चलाता है निर्माण करने के लिए:

FROM tomcat:8.0.20-jre8 

RUN mkdir /usr/local/tomcat/webapps/myapp 

COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp/ 

यह Dockerfile ठीक काम करता है और मैं बनाया छवि से कंटेनर शुरू करने के लिए कर रहा हूँ।

docker build -t myapp . 

docker run -it --rm -p 8888:8080 myapp 

इस कंटेनर को सही ढंग से शुरू होता है और कोई त्रुटि आउटपुट और संदेश कह मेरे ऐप तैनात किया गया था प्रदर्शित करता है।

22-Mar-2015 23:07:21.217 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 
Deploying web application directory /usr/local/tomcat/webapps/myapp 

कंटेनर भी सही ढंग से myapp.war पथ Dockerfile में वर्णित को कॉपी किया है। इसके अलावा मैं यह पुष्टि करने के लिए टॉमकैट डिफ़ॉल्ट पृष्ठ पर नेविगेट करने में सक्षम हूं कि टॉमकैट चल रहा है, मैं भी सभी उदाहरणों को हिट कर सकता हूं,

समस्या के लिए, जब मैं http://192.168.59.103:8888/myapp/getData पर नेविगेट करता हूं तो मुझे 404 मिलते हैं। मैं काफी नहीं कर सकता क्यों पता लगाओ। क्या मुझे टॉमकैट पर तैनात एक .war के बारे में कुछ याद आ रहा है?

+0

आप उस आईपी पते को कहां से प्राप्त कर रहे हैं? –

+0

यह मेरे Boot2Docker VM को असाइन किया गया है। उस आईपी को मारना:/myapp के बिना पोर्ट डिफ़ॉल्ट टॉमकैट पेज प्रदर्शित करता है। – Chris

+0

मैं एक लिनक्स लड़का हूं इसलिए व्यवहार भिन्न हो सकता है लेकिन स्थानीयहोस्ट पर जाने का प्रयास करें: इसके बजाय 8080। –

उत्तर

43

आप वेबपैप्स के नीचे एक उपदिर में युद्ध की प्रतिलिपि बनाने का प्रयास करते हैं, यह गलत है। युद्ध फ़ाइल को वेबएप फ़ोल्डर में सरल कॉपी किया जाना चाहिए।

इस तरह mkdir आदेश निकालें, और की जगह प्रतिलिपि:

COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp.war 

बिलाव युद्ध निकाल देंगे।

4

टोमकैट केवल वेबपैप निर्देशिका में कॉपी की गई युद्ध निकालेगा। DockerFile बदलें के रूप में

नीचे
FROM tomcat:8.0.20-jre8 
COPY /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/myapp.war 

आप नीचे के रूप में यूआरएल का उपयोग करने की जब तक आप webroot

http://192.168.59.103:8888/myapp/getData

4

इस एक के लिए एक oneliner है निर्दिष्ट किया है आवश्यकता हो सकती है।

आप बस चला सकते हैं,

docker run -v /1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.war:/usr/local/tomcat/webapps/myapp.war -it -p 8080:8080 tomcat 

यह webapps निर्देशिका के लिए युद्ध फाइल कॉपी और कुछ ही समय में चल रहे अपने अनुप्रयोग मिल जाएगा।

संबंधित मुद्दे