Spring-boot cannot start in docker

I have a little problem starting my spring boot application in docker.

stack: maven 3+, spring boot (jpa / rest / jetty) - mysql - docker deployment

So, I have pom in my file

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

Environment: Ubuntu 16.04 x64 Problem: Locally: I'm trying to start my application using the following command in 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???? 

This is not good, I can endure it. But not a docker. When the commands above will be launched in the docker, then the container will stop the docker (because → the application exit with 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 will start the container for 1 second and stop the container immediately because the return control is java. I am looking for a method that allows me to customize the spring application for predictable behavior or any ideas for improving my docker instructions. my content docker file:

 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 container logs enter image description here

For example: when I started nodejs host control, do not return until the application ends

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

I think the problem is the ampersand (&) on the command line:

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

Try to avoid this:

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

Ampersand designates a shell to run your process in the background. This is what happens on your local machine. If you run your jar, the process should start from the foreground ... and the invitation should not be returned directly.

+8
source

To keep it simple and clean, we added database properties to database.properties

Mongo db database configuration

 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 

We click this file while Docker is running, so only database properties will be overridden with existing application.properties

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

All Articles