Ich habe ein kleines Problem mit meiner Spring-Boot-Anwendung in Docker ausführen.Spring-Boot kann nicht in Docker starten
Stapel: Maven 3+, Federverschluß (JPA/rest/Anlegesteg) - mysql - in Docker einsetzen
Also, ich habe in meiner pom-Datei
<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>
Umwelt: Ubuntu 16.04 x64 Das Problem: Lokal: ich versuche, meine app mit Follow-Befehl im Terminal
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????
es ist nicht gut zu laufen durch i tolerat kann e es. Aber kein Docker. Wenn Befehle werden über in Andockfensters ausgeführt werden dann Andockfensters Anschlag Behälter (da -> app Ausgang mit dem Status 1)
ENTRYPOINT ["java", "-Xmx768m", "-jar", "/mnf-backend.jar", "--spring.datasource.url=jdbc:mysql://$MYSQL_PORT_3306_TCP_ADDR/app_1?autoReconnect=true&useSSL=false"]
Docker werden Behälter 1 und unmittelbar zweiten Startbehälter weil Java Rückstellsteuerung stoppen. Ich suche nach einer Methode, mit der ich die Spring-App für vorhersehbares Verhalten konfigurieren kann, oder nach Ideen, wie ich meine Docker-Anweisungen verbessern kann. mein dockerfile Inhalt:
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"]
Docker Protokolle eines Behälters
Zum Beispiel: wenn ich NodeJS App habe die Kontrolle erst zurück, wenn Anwendung starten nicht fertig
user$ node ./server.js
[...here program output and stdout strings]
[... it may be stopped by ctrl+c for example]
Können Sie Ihre Dockerfile, die Sie verwendet haben, posten? Und was ist nicht gut, dass du tolerieren kannst? – techtabu
Entschuldigung für mein Englisch. Ich meine, ich kann dieses Federverhalten lokal tolerieren, aber nicht in Docker –
, wenn die App (Java) mit dem Fehlercode 1 beendet - das heißt, Sie haben einige Probleme in der Umgebung, nicht Spring Boot. Suchen Sie die ID des Dockercontainers oder den Namen, und verwenden Sie 'docker logs', um herauszufinden, was dort fehlgeschlagen ist. –
jdevelop