2016-06-22 10 views
5

में शुरू नहीं हो सकता है मुझे डॉकर में अपने वसंत बूट एप्लिकेशन को चलाने में थोड़ी सी समस्या है।वसंत-बूट डॉकर

ढेर: Maven 3+, वसंत बूट (जेपीए/बाकी/जेटी) - mysql - डोकर में तैनात

तो, मैं अपने पोम फ़ाइल में है गया है

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.0.M3</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 
</properties> 

<dependencies> 
    <!-- SPRING BOOT DEPENDENCIES --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-rest</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.projectlombok</groupId> 
     <artifactId>lombok</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <!-- add for exlude tomcat --> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-tomcat</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <!-- END SPRING BOOT DEPENDENCIES--> 
    <!-- Jetty (tomcat replacement) --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-jetty</artifactId> 
    </dependency> 
    <!-- mysql connector --> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <scope>runtime</scope> 
    </dependency> 
    <!-- optional dependency javax.el --> 
    <dependency> 
     <groupId>javax.el</groupId> 
     <artifactId>javax.el-api</artifactId> 
     <version>3.0.0</version> 
    </dependency> 
    <!-- google http client --> 
    <dependency> 
     <groupId>com.google.http-client</groupId> 
     <artifactId>google-http-client</artifactId> 
     <version>1.21.0</version> 
    </dependency> 
    <!-- google http jackson --> 
    <dependency> 
     <groupId>com.google.http-client</groupId> 
     <artifactId>google-http-client-jackson2</artifactId> 
     <version>1.21.0</version> 
    </dependency> 
</dependencies> 

पर्यावरण: उबंटू 16.04 64 समस्या: स्थानीय रूप से: मैं टर्मिनल में आदेश का पालन के साथ अपने अनुप्रयोग चलाने के लिए कोशिश

user$ java -Xmx768m -jar /mnf-backend.jar --spring.datasource.url=jdbc:mysql://$MYSQL_PORT_3306_TCP_ADDR/app_1?autoReconnect=true&useSSL=false 
user$ #<--- LOOK AT THIS jvm has return of control with 1 status (or same status but not negative) 
:: Spring Boot ::    (v1.4.0.M3) # <--- spring boot starts by itself. HOW???? 

यह अच्छा नहीं है से मैं tolerat कर सकते हैं ई यह लेकिन डॉकर नहीं। जब आदेशों ऊपर डोकर में तो डोकर बंद कंटेनर चलाया जाएगा (क्योंकि -> स्थिति 1 के साथ एप्लिकेशन को बाहर निकलने के)

ENTRYPOINT ["java", "-Xmx768m", "-jar", "/mnf-backend.jar", "--spring.datasource.url=jdbc:mysql://$MYSQL_PORT_3306_TCP_ADDR/app_1?autoReconnect=true&useSSL=false"] 

डोकर कंटेनर 1 सेकंड शुरू करने और तुरंत कंटेनर बंद हो जाएगा क्योंकि जावा वापसी नियंत्रण। मैं उस विधि की तलाश करता हूं जो मुझे अनुमानित व्यवहार या किसी भी विचार के लिए वसंत ऐप को कॉन्फ़िगर करने की अनुमति देता है कि मेरे डॉकर निर्देशों को कैसे सुधारें। मेरी dockerfile सामग्री:

एक कंटेनर enter image description here

उदाहरण के लिए की

FROM frolvlad/alpine-oraclejdk8:slim 

ENV MNFB_ENV production 
ENV SERVER_PORT 9000 

ADD ./builds/mnf-latest.jar mnf-backend.jar 

EXPOSE 9000 



ENTRYPOINT ["java", "-Xmx768m", "-jar", "/mnf-backend.jar", "--spring.datasource.url=jdbc:mysql://$MYSQL_PORT_3306_TCP_ADDR/minifinance?autoReconnect=true&useSSL=false"] 

डोकर लॉग्स: जब मैं शुरू कर दिया है NodeJS एप्लिकेशन नियंत्रण जब तक आवेदन समाप्त नहीं हुआ वापस नहीं

user$ node ./server.js 
[...here program output and stdout strings] 
[... it may be stopped by ctrl+c for example] 
+0

क्या आप अपना डॉकरफ़ाइल पोस्ट कर सकते हैं? और, क्या अच्छा नहीं है कि आप सहन कर सकते हैं? – techtabu

+0

मेरी अंग्रेजी के लिए खेद है। मेरा मतलब है कि मैं इस वसंत व्यवहार को स्थानीय रूप से बर्दाश्त कर सकता हूं लेकिन डॉकर –

+0

में नहीं यदि ऐप (जावा) त्रुटि कोड 1 से निकलता है - इसका मतलब है कि आपको पर्यावरण में कुछ समस्याएं हैं, स्प्रिंग बूट नहीं। डॉकर कंटेनर आईडी या नाम देखें, और वहां क्या गलत हो गया है, यह जानने के लिए 'डॉकर लॉग <कंटेनर-आईडी>' का उपयोग करें। – jdevelop

उत्तर

8

मुझे लगता है कि समस्या एम्पर्सेंड() आपकी कमांड लाइन में है:

--spring.datasource.url=jdbc:mysql://$MYSQL_PORT_3306_TCP_ADDR/app_1?autoReconnect=true&useSSL=false"]

कोशिश यह से बचने के लिए:

--spring.datasource.url=jdbc:mysql://$MYSQL_PORT_3306_TCP_ADDR/app_1?autoReconnect=true\&useSSL=false"]

एम्परसेंड खोल अर्थ है पृष्ठभूमि में अपने प्रक्रिया शुरू करने के। यह ठीक है कि आपकी स्थानीय मशीन पर क्या हो रहा है। यदि आप अपना जार शुरू करते हैं, तो प्रक्रिया अग्रभूमि में शुरू होनी चाहिए ... और प्रॉम्प्ट सीधे वापस नहीं आना चाहिए।

0

यह सरल और साफ रखने के लिए, हम database.properties में डेटाबेस गुण जोड़ लिया है

मोंगो db डेटाबेस विन्यास

spring.data.mongodb.database=abc-auth 
spring.data.mongodb.host=192.168.2.2 
spring.data.mongodb.port=27017 
spring.data.mongodb.password=abc234quth 
spring.data.mongodb.username=abc-auth 

हम इस फ़ाइल धक्का डोकर, इसलिए केवल डेटाबेस गुण होगा चलाते समय मौजूदा application.properties के साथ ओवरराइड करें

ENTRYPOINT ["java","-jar","/home/docker/service/abc.jar","--spring.config.location=application.properties"]