Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring boot app runs fine standalone, errs in docker

I have a spring-boot based java application which runs fine from the command line (embedded tomcat standalone).

Problem

When I run the app in docker, it does not run correctly. The console shows the application starts up fine with no errors; however, the browser displays the following error page:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

[I understand the message says no mapping for '/error' url. However I want to know the root cause ]

Additional Info/Context

  • Spring boot 1.4.2
  • docker plugin
  • Output is 'war' file which also runs standalone
  • I run docker image in 'host' networking mode (--net=host) so it can access the database (mysql running on my localhost)

build.gradle target

task buildDocker(type: Docker, dependsOn: build) {
  push = false
  applicationName = jar.baseName
  dockerfile = file('src/main/docker/Dockerfile')
  doFirst {
    copy {
      from war
      into stageDir
    }
  }
}

dockerfile

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD floss.war app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

Command to Run Docker

dockerImg=1248c47d9cfa
docker run \
       -it \
       --net=host \
       -e SPRING_APPLICATION_JSON="$SPRING_APPLICATION_JSON" \
       $dockerImg

I'm new to docker and would appreciate any suggestions.

thanks in advance!

like image 530
user331465 Avatar asked Nov 22 '25 08:11

user331465


1 Answers

Problems:

  1. No exposed port in dockerfile
  2. No port mapping with host.

Sol: 1. expose application port in dockerfile and build image EXPOSE $application_port 2. then run docker run -p 8080:8080 -d -e SPRING_APPLICATION_JSON="$SPRING_APPLICATION_JSON" $dockerImg

like image 105
Manoj Sahu Avatar answered Nov 25 '25 00:11

Manoj Sahu