From 981fcb3ebc9f664621f5e71d8a06684f505007ce Mon Sep 17 00:00:00 2001 From: Nanne Baars Date: Sat, 23 Oct 2021 20:57:16 +0200 Subject: [PATCH] Move to different base image for Java This way we can also support arm/v7 --- .github/workflows/release.yml | 2 +- docker/Dockerfile | 11 +++----- docker/start.sh | 6 ++-- .../java/org/owasp/webgoat/StartWebGoat.java | 28 +++++++++---------- .../main/java/org/owasp/webwolf/WebWolf.java | 25 +++++++++-------- 5 files changed, 35 insertions(+), 37 deletions(-) mode change 100644 => 100755 docker/start.sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 57d612527..e725c8fa3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -94,7 +94,7 @@ jobs: context: ./docker file: docker/Dockerfile push: true - platforms: linux/amd64, linux/arm64 + platforms: linux/amd64, linux/arm64, linux/arm/v7 tags: | webgoat/goatandwolf:${{ env.WEBGOAT_TAG_VERSION }} webgoat/goatandwolf:latest diff --git a/docker/Dockerfile b/docker/Dockerfile index 1437def53..fda1ab0aa 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,7 +1,4 @@ -FROM openjdk:16-slim - -ARG webgoat_version=8.2.1-SNAPSHOT -ENV webgoat_version_env=${webgoat_version} +FROM eclipse-temurin:16.0.2_7-jdk-focal RUN apt-get update RUN useradd -ms /bin/bash webgoat @@ -11,12 +8,12 @@ USER webgoat COPY --chown=webgoat nginx.conf /etc/nginx/nginx.conf COPY --chown=webgoat index.html /usr/share/nginx/html/ -COPY --chown=webgoat target/webgoat-server-${webgoat_version}.jar /home/webgoat/webgoat.jar -COPY --chown=webgoat target/webwolf-${webgoat_version}.jar /home/webgoat/webwolf.jar +COPY --chown=webgoat target/webgoat-server-*.jar /home/webgoat/webgoat.jar +COPY --chown=webgoat target/webwolf-*.jar /home/webgoat/webwolf.jar COPY --chown=webgoat start.sh /home/webgoat EXPOSE 8080 EXPOSE 9090 WORKDIR /home/webgoat -ENTRYPOINT /bin/bash /home/webgoat/start.sh $webgoat_version_env +ENTRYPOINT /bin/bash start.sh diff --git a/docker/start.sh b/docker/start.sh old mode 100644 new mode 100755 index c1fdf8c6b..3a37439a6 --- a/docker/start.sh +++ b/docker/start.sh @@ -16,11 +16,11 @@ java \ --add-opens java.desktop/java.awt.font=ALL-UNNAMED \ --add-opens java.base/sun.nio.ch=ALL-UNNAMED \ --add-opens java.base/java.io=ALL-UNNAMED \ - -jar webgoat.jar --webgoat.build.version="$1" --server.address=0.0.0.0 > webgoat.log & + -jar webgoat.jar --server.address=0.0.0.0 > webgoat.log & echo "Starting WebWolf..." -java -Duser.home=/home/webgoat -Dfile.encoding=UTF-8 -jar webwolf.jar --webgoat.build.version=$1 --server.address=0.0.0.0 > webwolf.log & +java -Duser.home=/home/webgoat -Dfile.encoding=UTF-8 -jar webwolf.jar --server.address=0.0.0.0 > webwolf.log & echo "Browse to http://localhost to get started" >> webgoat.log -tail -300f webgoat.log +exec tail -300f webgoat.log diff --git a/webgoat-server/src/main/java/org/owasp/webgoat/StartWebGoat.java b/webgoat-server/src/main/java/org/owasp/webgoat/StartWebGoat.java index 30b2a153b..99396b122 100644 --- a/webgoat-server/src/main/java/org/owasp/webgoat/StartWebGoat.java +++ b/webgoat-server/src/main/java/org/owasp/webgoat/StartWebGoat.java @@ -50,26 +50,26 @@ public class StartWebGoat extends SpringBootServletInitializer { public static void main(String[] args) { log.info("Starting WebGoat with args: {}", StringUtils.arrayToCommaDelimitedString(args)); System.setProperty("spring.config.name", "application-webgoat"); - - String webgoatPort = System.getenv("WEBGOAT_PORT"); - String databasePort = System.getenv("WEBGOAT_HSQLPORT"); - String webGoatHost = null==System.getenv("WEBGOAT_HOST")?"127.0.0.1":System.getenv("WEBGOAT_HOST"); - int goatPort = webgoatPort == null?8080:Integer.parseInt(webgoatPort); - int dbPort = databasePort == null?9001:Integer.parseInt(databasePort); - + + String webgoatPort = System.getenv("WEBGOAT_PORT"); + String databasePort = System.getenv("WEBGOAT_HSQLPORT"); + String webGoatHost = null == System.getenv("WEBGOAT_HOST") ? "127.0.0.1" : System.getenv("WEBGOAT_HOST"); + int goatPort = webgoatPort == null ? 8080 : Integer.parseInt(webgoatPort); + int dbPort = databasePort == null ? 9001 : Integer.parseInt(databasePort); + if (isAlreadyRunning(webGoatHost, goatPort)) { - log.error("Port {}:{} is already in use", webGoatHost, goatPort); - System.out.println("Port "+webGoatHost+":"+goatPort+" is in use. Use environment value WEBGOAT_PORT to set a different value."); - System.exit(-1); + log.error("Port {}:{} is already in use", webGoatHost, goatPort); + System.out.println("Port " + webGoatHost + ":" + goatPort + " is in use. Use environment value WEBGOAT_PORT to set a different value."); + System.exit(-1); } if (isAlreadyRunning(webGoatHost, dbPort)) { - log.error("Port {}:{} is already in use", webGoatHost, goatPort); - System.out.println("Port "+webGoatHost+":"+goatPort+" is in use. Use environment value WEBGOAT_HSQLPORT to set a different value."); - System.exit(-1); + log.error("Port {}:{} is already in use", webGoatHost, goatPort); + System.out.println("Port " + webGoatHost + ":" + goatPort + " is in use. Use environment value WEBGOAT_HSQLPORT to set a different value."); + System.exit(-1); } SpringApplication.run(StartWebGoat.class, args); } - + private static boolean isAlreadyRunning(String host, int port) { try (var ignored = new Socket(host, port)) { return true; diff --git a/webwolf/src/main/java/org/owasp/webwolf/WebWolf.java b/webwolf/src/main/java/org/owasp/webwolf/WebWolf.java index 1b045d45c..029268003 100644 --- a/webwolf/src/main/java/org/owasp/webwolf/WebWolf.java +++ b/webwolf/src/main/java/org/owasp/webwolf/WebWolf.java @@ -26,10 +26,12 @@ import java.io.IOException; import java.net.Socket; import org.owasp.webwolf.requests.WebWolfTraceRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.actuate.trace.http.HttpTraceRepository; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Profile; @SpringBootApplication public class WebWolf { @@ -42,22 +44,21 @@ public class WebWolf { public static void main(String[] args) { System.setProperty("spring.config.name", "application-webwolf"); - String webwolfPort = System.getenv("WEBWOLF_PORT"); - String webGoatHost = null==System.getenv("WEBGOAT_HOST")?"127.0.0.1":System.getenv("WEBGOAT_HOST"); - String webWolfHost = null==System.getenv("WEBWOLF_HOST")?"127.0.0.1":System.getenv("WEBWOLF_HOST"); + String webwolfPort = System.getenv("WEBWOLF_PORT"); + String webWolfHost = null == System.getenv("WEBWOLF_HOST") ? "127.0.0.1" : System.getenv("WEBWOLF_HOST"); String fileEncoding = System.getProperty("file.encoding"); - int wolfPort = webwolfPort == null?9090:Integer.parseInt(webwolfPort); - - if (null==fileEncoding || !fileEncoding.equals("UTF-8")) { - System.out.println("It seems the application is startd on a OS with non default UTF-8 encoding:"+fileEncoding); - System.out.println("Please add: -Dfile.encoding=UTF-8"); - System.exit(-1); + int wolfPort = webwolfPort == null ? 9090 : Integer.parseInt(webwolfPort); + + if (null == fileEncoding || !fileEncoding.equals("UTF-8")) { + System.out.println("It seems the application is started on a OS with non default UTF-8 encoding:" + fileEncoding); + System.out.println("Please add: -Dfile.encoding=UTF-8"); + System.exit(-1); } - if (isAlreadyRunning(webGoatHost, wolfPort)) { - System.out.println("Port "+webWolfHost+":"+wolfPort+" is in use. Use environment value WEBWOLF_PORT to set a different value."); - System.exit(-1); + if (isAlreadyRunning(webWolfHost, wolfPort)) { + System.out.println("Port " + webWolfHost + ":" + wolfPort + " is in use. Use environment value WEBWOLF_PORT to set a different value."); + System.exit(-1); } SpringApplication.run(WebWolf.class, args); }