2016-06-22 19 views
5

Mam mały problem z uruchomieniem mojej aplikacji do uruchamiania wiosennego w oknie dokowanym.Spring-boot nie może uruchomić się w docker

stosu: Maven 3+, wiosna rozruchowy (JPA/reszta/molo) - mysql - wdrożyć w dokowanym

Więc, ja mam w moim pliku pom

<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> 

Środowisko: Ubuntu 16.04 64 problem: lokalnie: próbuję uruchomić aplikację z mojego polecenia obserwacji w terminalu

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???? 

to nie jest dobry przez co mogę tolerat e to. Ale nie doker. Gdy powyższe polecenia uruchomienia w dokowanym następnie dokowanym pojemnik zatrzymania (z powodu -> ok wyjście ze stanu 1)

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

dokowanym rozpocznie pojemnik 1 sekundę i natychmiast zatrzymać, ponieważ pojemnik regulacji powrotu Java. Poszukuję metody, która pozwoli mi skonfigurować aplikację wiosną dla przewidywalnego zachowania lub pomysłów, jak poprawić moje instrukcje dokowania. moją zawartość dockerfile:

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"] 

kłody dokowane z pojemnika enter image description here

Na przykład: kiedy mam zacząć nie nodejs kontrola aplikacji powrócić dopóki aplikacja nie skończył

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

Czy możesz opublikować plik Docker, którego użyłeś? A co nie jest dobre, że można tolerować? – techtabu

+0

Przepraszam za mój angielski. Chodzi mi o to, że mogę tolerować to wiosenne zachowanie lokalnie, ale nie w docku –

+0

, jeśli aplikacja (java) wychodzi z kodem błędu 1 - oznacza to, że masz problemy w środowisku, a nie Spring Boot. Wyszukaj identyfikator lub nazwę kontenera kontenera i użyj "dzienników dokowania ", aby dowiedzieć się, co poszło nie tak. – jdevelop

Odpowiedz

8

myślę problemem jest ampersand (&) w linii poleceń:

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

starają się uciec:

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

Znak & oznacza powłokę, aby rozpocząć proces w tle. Dokładnie to się dzieje na twoim lokalnym komputerze. Jeśli uruchomisz słoik, proces powinien rozpocząć się na pierwszym planie ... a monit nie powinien powracać bezpośrednio.

0

Aby zachować prosty i czysty, dodaliśmy właściwości bazy danych w database.properties

Mongo konfiguracja bazy danych 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 

nam wcisnąć ten plik podczas uruchamiania Döcker, więc tylko właściwości bazy danych będzie zmień istniejącą aplikację.properties

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