From 5edb668d24fcb1187bf4333098909678cbe57dc2 Mon Sep 17 00:00:00 2001 From: Brian Long Date: Mon, 15 Mar 2021 18:53:31 -0400 Subject: [PATCH] refactored to not use ubuntu packages, but raw packages --- Dockerfile | 54 ++++++++----- docker-entrypoint.sh | 2 +- hotswap-agent.properties | 8 +- pom.xml | 22 +++-- tomcat-context.xml | 50 ++++++------ tomcat-server.xml | 171 --------------------------------------- 6 files changed, 77 insertions(+), 230 deletions(-) delete mode 100644 tomcat-server.xml diff --git a/Dockerfile b/Dockerfile index e5e69d8..400bc56 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,34 +4,46 @@ FROM ubuntu:${ubuntu.version} # Configure the Apache Tomcat Catalina script ENV JAVA_MEMORY_INIT=128m ENV JAVA_MEMORY_MAX=512m -ENV JAVA_HOME="/usr/lib/jvm/java-${java.majorVersion}-openjdk-amd64" -ENV CATALINA_HOME="/usr/share/tomcat${tomcat.majorVersion}" -ENV CATALINA_BASE="/var/lib/tomcat${tomcat.majorVersion}" +ENV JAVA_HOME="/usr/local/lib/jvm/java-openjdk-dcevm" +ENV CATALINA_HOME="/usr/local/share/tomcat" +ENV CATALINA_BASE="/var/lib/tomcat" ENV CATALINA_OPTS= -# Install the latest Apache Tomcat and its Java dependencies -RUN apt update && apt -y install curl && \ - apt -y install openjdk-${java.majorVersion}-jdk-headless && \ - apt -y install openjdk-${java.majorVersion}-jre-dcevm && \ - apt -y install tomcat${tomcat.majorVersion} && \ - cd /var/lib/tomcat${tomcat.majorVersion}/lib && \ - curl -OL https://github.com/HotswapProjects/HotswapAgent/releases/download/RELEASE-${hotswap.version}/hotswap-agent-${hotswap.version}.jar +# Install curl +RUN apt update && apt -y install curl + +# Download & Install DCEVM Java +RUN mkdir -p /usr/local/lib/jvm && \ + curl -L https://github.com/TravaOpenJDK/trava-jdk-${dcevm.majorVersion}-dcevm/releases/download/dcevm-${dcevm.version}/java${dcevm.majorVersion}-openjdk-dcevm-linux.tar.gz -o /usr/local/lib/jvm/java-openjdk-dcevm.tar.gz && \ + cd /usr/local/lib/jvm && tar xzvf java-openjdk-dcevm.tar.gz && mv dcevm-${dcevm.version} java-openjdk-dcevm && rm java-openjdk-dcevm.tar.gz + +# Download Hotswap Agent +RUN curl -L https://github.com/HotswapProjects/HotswapAgent/releases/download/RELEASE-${hotswap.version}/hotswap-agent-${hotswap.version}.jar -o /usr/local/lib/jvm/hotswap-agent.jar + +# Download & Install Apache Tomcat +RUN mkdir -p /usr/local/share && \ + curl -L ${tomcat.mirror.baseUrl}/tomcat-${tomcat.majorVersion}/v${tomcat.version}/bin/apache-tomcat-${tomcat.version}.tar.gz -o /usr/local/share/apache-tomcat.tar.gz && \ + cd /usr/local/share && tar xzvf apache-tomcat.tar.gz && mv apache-tomcat-${tomcat.version} tomcat && rm apache-tomcat.tar.gz + +# Split Catalina Home & Base +RUN cd /usr/local/share/tomcat && \ + mv webapps webapps.ignore && \ + mkdir -p /var/lib/tomcat/webapps /var/lib/tomcat/lib /var/lib/tomcat/dev && \ + mv conf work temp logs /var/lib/tomcat + +# Add directories for dynamic injection points +RUN cd /var/lib/tomcat/dev && \ + mkdir classes classes-extra1 classes-extra2 classes-extra3 classes-extra4 classes-extra5 classes-extra6 classes-extra7 && \ + mkdir lib lib-extra1 lib-extra2 lib-extra3 lib-extra4 lib-extra5 lib-extra6 lib-extra7 && \ + mkdir web web-extra1 web-extra2 web-extra3 web-extra4 web-extra5 web-extra6 web-extra7 # Add our Docker container initialization script ADD docker-entrypoint.sh /usr/local/bin # Add our Apache Tomcat configuration # This gives us dynamic injection points into the running webapps -COPY tomcat-context.xml /etc/tomcat${tomcat.majorVersion}/context.xml -COPY hotswap-agent.properties /var/lib/tomcat${tomcat.majorVersion}/lib - -# Add directories for dynamic injection points -RUN cd /var/lib/tomcat${tomcat.majorVersion} && \ - rm -rf webapps/ROOT* && \ - mkdir dev && cd dev && \ - mkdir classes classes-extra1 classes-extra2 classes-extra3 classes-extra4 classes-extra5 classes-extra6 classes-extra7 && \ - mkdir lib lib-extra1 lib-extra2 lib-extra3 lib-extra4 lib-extra5 lib-extra6 lib-extra7 && \ - mkdir web web-extra1 web-extra2 web-extra3 web-extra4 web-extra5 web-extra6 web-extra7 +COPY tomcat-context.xml /var/lib/tomcat/conf/context.xml +ADD hotswap-agent.properties /var/lib/tomcat/lib # Listening for HTTP (not HTTPS) traffic EXPOSE 8080 @@ -46,4 +58,4 @@ EXPOSE 8000 ENTRYPOINT [ "/usr/local/bin/docker-entrypoint.sh" ] # Start the Apache Tomcat web container using the Catalina script -CMD [ "/usr/share/tomcat${tomcat.majorVersion}/bin/catalina.sh", "run" ] +CMD [ "/usr/local/share/tomcat/bin/catalina.sh", "run" ] diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 8efefac..6f507fc 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,4 +1,4 @@ #!/bin/bash -CATALINA_OPTS="-Xms${JAVA_MEMORY_INIT} -Xmx${JAVA_MEMORY_MAX} -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n $CATALINA_OPTS" +CATALINA_OPTS="-Xms${JAVA_MEMORY_INIT} -Xmx${JAVA_MEMORY_MAX} -XX:HotswapAgent=external -javaagent:/usr/local/lib/jvm/hotswap-agent.jar -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n $CATALINA_OPTS" exec "$@" diff --git a/hotswap-agent.properties b/hotswap-agent.properties index c3992ec..b87a98b 100644 --- a/hotswap-agent.properties +++ b/hotswap-agent.properties @@ -7,7 +7,7 @@ # This may be useful for example in multi module maven project to load class changes from upstream project # classes. Set extraClasspath to upstream project compiler output and .class file will have precedence to # classes from built JAR file. -extraClasspath=/var/lib/tomcat9/dev/classes +extraClasspath=/var/lib/tomcat/dev/classes # Watch for changes in a directory (resources only). If not set, changes of resources won't be observed. # @@ -19,19 +19,19 @@ extraClasspath=/var/lib/tomcat9/dev/classes # replacements of resources in a building step (maven filtering resource option). # This setting will leave i.e. src/target/classes as default source for resources, but after the resource is modified # in src/main/resources, the new changed resource is served instead. -watchResources=/var/lib/tomcat9/dev/classes +watchResources=/var/lib/tomcat/dev/classes # Load static web resources from different directory. # # This setting is dependent on application server plugin(Jetty, Tomcat, ...). # Jboss and Glassfish are not yet supported. # Use this setting to set to serve resources from source directory directly (e.g. src/main/webapp). -webappDir=/var/lib/tomcat9/dev/web +webappDir=/var/lib/tomcat/dev/web # Comma separated list of disabled plugins # Use plugin name - e.g. Hibernate, Spring, ZK, Hotswapper, AnonymousClassPatch, Tomcat, Logback .... -disabledPlugins= +disabledPlugins=Hibernate # Watch for changed class files on watchResources path and reload class definition in the running application. # diff --git a/pom.xml b/pom.xml index 5af81c5..187c64e 100644 --- a/pom.xml +++ b/pom.xml @@ -9,24 +9,29 @@ - + + 20.04 - - 1.4.1 + + + 11.0.10+4 + 11 - + + + 9.0.44 9 + https://apache.osuosl.org/tomcat - - - 11 + + + 1.4.1 inteligr8/${project.artifactId} ${project.version} docker.inteligr8.com - true @@ -65,6 +70,7 @@ maven-deploy-plugin + 3.0.0-M1 true diff --git a/tomcat-context.xml b/tomcat-context.xml index 19fc5b7..99c4354 100644 --- a/tomcat-context.xml +++ b/tomcat-context.xml @@ -16,7 +16,7 @@ limitations under the License. --> - + @@ -32,31 +32,31 @@ - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + diff --git a/tomcat-server.xml b/tomcat-server.xml deleted file mode 100644 index b6b432e..0000000 --- a/tomcat-server.xml +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file