You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2018/11/29 14:29:57 UTC

svn commit: r1847725 - in /tomcat/trunk: res/tomcat-maven/ res/tomcat-maven/Dockerfile res/tomcat-maven/README.md res/tomcat-maven/pom.xml webapps/docs/changelog.xml

Author: remm
Date: Thu Nov 29 14:29:57 2018
New Revision: 1847725

URL: http://svn.apache.org/viewvc?rev=1847725&view=rev
Log:
As requested, add the packaging-using-Maven as well as the corresponding (much simpler than the official one) dockerfile. To be refined most likely.

Added:
    tomcat/trunk/res/tomcat-maven/
    tomcat/trunk/res/tomcat-maven/Dockerfile   (with props)
    tomcat/trunk/res/tomcat-maven/README.md   (with props)
    tomcat/trunk/res/tomcat-maven/pom.xml   (with props)
Modified:
    tomcat/trunk/webapps/docs/changelog.xml

Added: tomcat/trunk/res/tomcat-maven/Dockerfile
URL: http://svn.apache.org/viewvc/tomcat/trunk/res/tomcat-maven/Dockerfile?rev=1847725&view=auto
==============================================================================
--- tomcat/trunk/res/tomcat-maven/Dockerfile (added)
+++ tomcat/trunk/res/tomcat-maven/Dockerfile Thu Nov 29 14:29:57 2018
@@ -0,0 +1,37 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM openjdk:8-jre-alpine
+VOLUME /tmp
+
+USER root
+RUN mkdir -m 777 -p /deployments
+
+ADD target/tomcat-maven-1.0.jar /deployments/app.jar
+ADD conf /deployments/conf
+ADD webapps /deployments/webapps
+
+WORKDIR /deployments
+
+ARG namespace=myproject
+ENV KUBERNETES_NAMESPACE=$namespace
+ARG port=8080
+EXPOSE $port
+
+RUN sh -c 'touch app.jar'
+ENV JAVA_OPTS="-Dcatalina.base=. -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=conf/logging.properties -Djava.security.egd=file:/dev/urandom"
+ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar app.jar" ]
+

Propchange: tomcat/trunk/res/tomcat-maven/Dockerfile
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tomcat/trunk/res/tomcat-maven/README.md
URL: http://svn.apache.org/viewvc/tomcat/trunk/res/tomcat-maven/README.md?rev=1847725&view=auto
==============================================================================
--- tomcat/trunk/res/tomcat-maven/README.md (added)
+++ tomcat/trunk/res/tomcat-maven/README.md Thu Nov 29 14:29:57 2018
@@ -0,0 +1,74 @@
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+
+# Apache Tomcat distribution for Apache Maven
+
+## Configuration
+
+Configuration is located in `conf/server.xml`, `conf/web.xml`, `conf/logging.properties`, all other configuration files, resources and context files are located in `conf`, identical to standalone Tomcat.
+
+## Building
+
+### Maven build
+
+Update Tomcat version number in the `pom.xml`, customize Tomcat components in the dependencies to keep the ones needed (only the main `tomcat-catalina` is mandatory). Custom Tomcat components sources can be added to the usual Maven build path and will be included in the package that is built.
+```
+mvn clean; mvn package
+```
+
+### Docker build
+
+```
+docker build -t apache/tomcat-maven:1.0 -f ./Dockerfile .
+```
+Docker build arguments include `namepsace` (default is `myproject`) and `port` which should match the Tomcat port in `server.xml` (default is `8080`). Other ports that need to be exposed can be added in the `Dockerfile` as needed. Webapps should be added to the `webapps` folder where they will be auto deployed by the host if using the defaults. Otherwise, the `Dockerfile` command line can be edited like below to include the necesary resources and command line arguments to run a single or multiple hardcoded web applications.
+
+## Running
+
+Add a webapp as folder mywebapp (for this example, or specify another path), or a path from which a configured Host will auto deploy
+```
+--path: Specify a path the wepapp will use
+--war: Add the spcified path (directory or war) as a webapp (if no path has been specified, it will be the root webapp)
+```
+
+The JULI logging manager configuration is optional but makes logging more readable and configurable:
+`-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=conf/logging.properties`
+The default JULI configuration uses `catalina.base`, so specifying the system property with `-Dcatalina.base=.` is also useful.
+
+### Command line example with a single root webapp
+
+```
+java -Dcatalina.base=. -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=conf/logging.properties -jar target/tomcat-maven-1.0.jar --war myrootwebapp
+```
+
+### Command line example with three webapps
+
+```
+java -Dcatalina.base=. -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=conf/logging.properties -jar target/tomcat-maven-1.0.jar --war myrootwebapp --path /path1 --war mywebapp1 --path /path2 --war mywebapp2
+```
+
+## Deployment
+
+If using the Kubernetes cloud clustering membership provider, the pod needs to have the persmission to view other pods. For exemple with Openshift, this is done with:
+```
+oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default -n $(oc project -q)
+```
+

Propchange: tomcat/trunk/res/tomcat-maven/README.md
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tomcat/trunk/res/tomcat-maven/pom.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/res/tomcat-maven/pom.xml?rev=1847725&view=auto
==============================================================================
--- tomcat/trunk/res/tomcat-maven/pom.xml (added)
+++ tomcat/trunk/res/tomcat-maven/pom.xml Thu Nov 29 14:29:57 2018
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<project>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.apache.tomcat</groupId>
+    <artifactId>tomcat-maven</artifactId>
+    <version>1.0</version>
+    <packaging>jar</packaging>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <mainClass>org.apache.catalina.startup.Tomcat</mainClass>
+        <tomcat.version>9.0.14</tomcat.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tomcat</groupId>
+            <artifactId>tomcat-catalina</artifactId>
+            <version>${tomcat.version}</version>
+        </dependency>
+        <!-- Optional: Jasper -->
+        <dependency>
+            <groupId>org.apache.tomcat</groupId>
+            <artifactId>tomcat-jasper</artifactId>
+            <version>${tomcat.version}</version>
+        </dependency>
+        <!-- Optional: Clustering -->
+        <dependency>
+            <groupId>org.apache.tomcat</groupId>
+            <artifactId>tomcat-catalina-ha</artifactId>
+            <version>${tomcat.version}</version>
+        </dependency>
+        <!-- Optional: Websockets -->
+        <dependency>
+            <groupId>org.apache.tomcat</groupId>
+            <artifactId>tomcat-websocket</artifactId>
+            <version>${tomcat.version}</version>
+        </dependency>
+        <!-- Optional: DBCP based pool -->
+        <dependency>
+            <groupId>org.apache.tomcat</groupId>
+            <artifactId>tomcat-dbcp</artifactId>
+            <version>${tomcat.version}</version>
+        </dependency>
+        <!-- Optional: Store configuration listener -->
+        <dependency>
+            <groupId>org.apache.tomcat</groupId>
+            <artifactId>tomcat-storeconfig</artifactId>
+            <version>${tomcat.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <!-- Build any extra classes for your custom Tomcat components if needed -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.5.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <version>3.0.0</version>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <createDependencyReducedPom>false</createDependencyReducedPom>
+                            <transformers>
+                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                    <mainClass>${mainClass}</mainClass>
+                                </transformer>
+                            </transformers>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Propchange: tomcat/trunk/res/tomcat-maven/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1847725&r1=1847724&r2=1847725&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Nov 29 14:29:57 2018
@@ -226,6 +226,10 @@
       <fix>
         Include Korean translations in the standard Tomcat distribution. (markt)
       </fix>
+      <add>
+        Add a packaging method for Tomcat using Maven, as well as a container
+        build file for it. (remm)
+      </add>
     </changelog>
   </subsection>
 </section>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org