Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to create directory for deployment: [/usr/local/tomcat/conf/Catalina/localhost] #128

Closed
hanrw opened this issue Aug 8, 2018 · 5 comments
Labels
question Usability question, not directly related to an error with the image

Comments

@hanrw
Copy link

hanrw commented Aug 8, 2018

I'm trying to run with non-root user but got errors
System

Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-112-generic x86_64)

Unable to create directory for deployment: [/usr/local/tomcat/conf/Catalina/localhost]
Unable to create the directory [/usr/local/tomcat/webapps/jolokia]

environment parameters:

LOCAL_USER_ID 1006 (not root user)
LOCAL_GROUP_ID 1006 (not root user)

8/8/2018 4:38:06 PM08-Aug-2018 10:38:06.880 SEVERE [Catalina-startStop-1] org.apache.catalina.startup.HostConfig.beforeStart Unable to create directory for deployment: [/usr/local/tomcat/conf/Catalina/localhost]
8/8/2018 4:38:06 PM08-Aug-2018 10:38:06.901 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/usr/local/tomcat/webapps/jolokia.war]
8/8/2018 4:38:06 PM08-Aug-2018 10:38:06.931 SEVERE [localhost-startStop-1] org.apache.catalina.startup.ContextConfig.beforeStart Exception fixing docBase for context [/jolokia]
8/8/2018 4:38:06 PM java.io.IOException: Unable to create the directory [/usr/local/tomcat/webapps/jolokia]

Dockerfile

FROM tomcat:8.5-jre8-slim

ARG userid=1001
ARG groupid=1001
ARG user=tomcat

ENV LOCAL_USER_ID=$userid
ENV LOCAL_GROUP_ID=$groupid
ENV USER=$user

ENV JOLOKIA_VERSION="1.5.0"

RUN apt-get update && \
    apt-get install -y gosu wget

RUN  echo "download jolokia version ${JOLOKIA_VERSION} (https://repo1.maven.org/maven2/org/jolokia/jolokia-war)" && \
     wget https://repo1.maven.org/maven2/org/jolokia/jolokia-war/${JOLOKIA_VERSION}/jolokia-war-${JOLOKIA_VERSION}.war -O ${CATALINA_HOME}/webapps/jolokia.war

ADD docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

RUN rm -rf ${CATALINA_HOME}/webapps/examples
RUN rm -rf ${CATALINA_HOME}/webapps/host-manager
RUN rm -rf ${CATALINA_HOME}/webapps/manager
RUN rm -rf ${CATALINA_HOME}/webapps/docs

ADD docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]

EXPOSE 8080
EXPOSE 8009

CMD ["catalina.sh", "run"]

docker-entrypoint.sh

#!/bin/bash
# Credit goes to https://denibertovic.com/posts/handling-permissions-with-docker-volumes/
# Modified to allow adding groups and mounting volumes as home of the user


# Add local user
# Either use the LOCAL_USER_ID if passed in at runtime or
# fallback
echo "Starting with UID : $LOCAL_USER_ID"
groupadd -r $LOCAL_USER_ID -g $LOCAL_GROUP_ID
useradd --shell /bin/bash -d /usr/local/tomcat -u $LOCAL_USER_ID -g $LOCAL_GROUP_ID -o -c "" -m $USER

mkdir -p /usr/local/tomcat/work/Catalina/localhost/ROOT/

chown -R $LOCAL_USER_ID:$LOCAL_GROUP_ID /usr/local/tomcat

exec gosu $USER "$@"
@wglambert wglambert added the question Usability question, not directly related to an error with the image label Aug 8, 2018
@wglambert
Copy link

What logs are you checking for those errors, using docker logs no relevant errors come up and the webpage is serving content

$ docker logs tomcat
Starting with UID : 1001
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /docker-java-home/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
08-Aug-2018 17:14:38.126 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.5.32
08-Aug-2018 17:14:38.127 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jun 20 2018 19:50:35 UTC
08-Aug-2018 17:14:38.127 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.5.32.0
08-Aug-2018 17:14:38.128 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
08-Aug-2018 17:14:38.128 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.13.0-46-generic
08-Aug-2018 17:14:38.128 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
08-Aug-2018 17:14:38.128 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-8-openjdk-amd64/jre
08-Aug-2018 17:14:38.128 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_171-8u171-b11-1~deb9u1-b11
08-Aug-2018 17:14:38.128 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
08-Aug-2018 17:14:38.128 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/tomcat
08-Aug-2018 17:14:38.128 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/local/tomcat
08-Aug-2018 17:14:38.128 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
08-Aug-2018 17:14:38.128 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
08-Aug-2018 17:14:38.129 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
08-Aug-2018 17:14:38.129 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
08-Aug-2018 17:14:38.129 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
08-Aug-2018 17:14:38.129 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
08-Aug-2018 17:14:38.129 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
08-Aug-2018 17:14:38.129 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
08-Aug-2018 17:14:38.129 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
08-Aug-2018 17:14:38.130 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.17] using APR version [1.5.2].
08-Aug-2018 17:14:38.130 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
08-Aug-2018 17:14:38.130 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
08-Aug-2018 17:14:38.132 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.0f  25 May 2017]
08-Aug-2018 17:14:38.200 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
08-Aug-2018 17:14:38.207 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
08-Aug-2018 17:14:38.212 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
08-Aug-2018 17:14:38.213 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
08-Aug-2018 17:14:38.213 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 345 ms
08-Aug-2018 17:14:38.232 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
08-Aug-2018 17:14:38.232 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.32
08-Aug-2018 17:14:38.259 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/usr/local/tomcat/webapps/jolokia.war]
08-Aug-2018 17:14:38.504 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
08-Aug-2018 17:14:38.584 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/usr/local/tomcat/webapps/jolokia.war] has finished in [325] ms
08-Aug-2018 17:14:38.585 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/ROOT]
08-Aug-2018 17:14:38.595 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/ROOT] has finished in [10] ms
08-Aug-2018 17:14:38.598 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
08-Aug-2018 17:14:38.605 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
08-Aug-2018 17:14:38.607 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 394 ms
$ docker ps | grep tomcat
de82a67d8353        tomcat:test                            "/usr/local/bin/dock…"   4 minutes ago       Up 4 minutes                    0.0.0.0:32769->8009/tcp, 0.0.0.0:32768->8080/tcp   tomcat
$ curl localhost:32768



<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Apache Tomcat/8.5.32</title>
        <link href="favicon.ico" rel="icon" type="image/x-icon" />
        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <link href="tomcat.css" rel="stylesheet" type="text/css" />
    </head>
. . .

@hanrw
Copy link
Author

hanrw commented Aug 9, 2018

Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-112-generic x86_64) not working

docker run -it -e USER_ID=1006 -e GROUP_ID=1006 my-tomcat:8.5-jre8-slim
Starting with UID : 1006
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /docker-java-home/jre
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
java.util.logging.ErrorManager: 4
java.io.FileNotFoundException: /opt/tomcat/logs/catalina.2018-08-09.log (Permission denied)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at org.apache.juli.FileHandler.openWriter(FileHandler.java:504)
	at org.apache.juli.FileHandler.<init>(FileHandler.java:176)
	at org.apache.juli.AsyncFileHandler.<init>(AsyncFileHandler.java:82)
	at org.apache.juli.AsyncFileHandler.<init>(AsyncFileHandler.java:74)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:601)
	at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:538)
	at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:336)
	at java.util.logging.LogManager$3.run(LogManager.java:399)
	at java.util.logging.LogManager$3.run(LogManager.java:396)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.util.logging.LogManager.readPrimordialConfiguration(LogManager.java:396)
	at java.util.logging.LogManager.access$800(LogManager.java:145)
	at java.util.logging.LogManager$2.run(LogManager.java:345)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.util.logging.LogManager.ensureLogManagerInitialized(LogManager.java:338)
	at java.util.logging.LogManager.getLogManager(LogManager.java:378)
	at java.util.logging.Logger.demandLogger(Logger.java:448)
	at java.util.logging.Logger.getLogger(Logger.java:502)
	at org.apache.juli.logging.DirectJDKLog.<init>(DirectJDKLog.java:68)
	at org.apache.juli.logging.DirectJDKLog.getInstance(DirectJDKLog.java:188)
	at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:117)
	at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:141)
	at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:196)
	at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:52)
java.util.logging.ErrorManager: 4
java.io.FileNotFoundException: /opt/tomcat/logs/localhost.2018-08-09.log (Permission denied)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at org.apache.juli.FileHandler.openWriter(FileHandler.java:504)
	at org.apache.juli.FileHandler.<init>(FileHandler.java:176)
	at org.apache.juli.AsyncFileHandler.<init>(AsyncFileHandler.java:82)
	at org.apache.juli.AsyncFileHandler.<init>(AsyncFileHandler.java:74)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:601)
	at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:538)
	at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:336)
	at java.util.logging.LogManager$3.run(LogManager.java:399)
	at java.util.logging.LogManager$3.run(LogManager.java:396)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.util.logging.LogManager.readPrimordialConfiguration(LogManager.java:396)
	at java.util.logging.LogManager.access$800(LogManager.java:145)
	at java.util.logging.LogManager$2.run(LogManager.java:345)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.util.logging.LogManager.ensureLogManagerInitialized(LogManager.java:338)
	at java.util.logging.LogManager.getLogManager(LogManager.java:378)
	at java.util.logging.Logger.demandLogger(Logger.java:448)
	at java.util.logging.Logger.getLogger(Logger.java:502)
	at org.apache.juli.logging.DirectJDKLog.<init>(DirectJDKLog.java:68)
	at org.apache.juli.logging.DirectJDKLog.getInstance(DirectJDKLog.java:188)
	at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:117)
	at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:141)
	at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:196)
	at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:52)
java.util.logging.ErrorManager: 4
java.io.FileNotFoundException: /opt/tomcat/logs/manager.2018-08-09.log (Permission denied)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at org.apache.juli.FileHandler.openWriter(FileHandler.java:504)
	at org.apache.juli.FileHandler.<init>(FileHandler.java:176)
	at org.apache.juli.AsyncFileHandler.<init>(AsyncFileHandler.java:82)
	at org.apache.juli.AsyncFileHandler.<init>(AsyncFileHandler.java:74)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:601)
	at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:538)
	at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:336)
	at java.util.logging.LogManager$3.run(LogManager.java:399)
	at java.util.logging.LogManager$3.run(LogManager.java:396)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.util.logging.LogManager.readPrimordialConfiguration(LogManager.java:396)
	at java.util.logging.LogManager.access$800(LogManager.java:145)
	at java.util.logging.LogManager$2.run(LogManager.java:345)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.util.logging.LogManager.ensureLogManagerInitialized(LogManager.java:338)
	at java.util.logging.LogManager.getLogManager(LogManager.java:378)
	at java.util.logging.Logger.demandLogger(Logger.java:448)
	at java.util.logging.Logger.getLogger(Logger.java:502)
	at org.apache.juli.logging.DirectJDKLog.<init>(DirectJDKLog.java:68)
	at org.apache.juli.logging.DirectJDKLog.getInstance(DirectJDKLog.java:188)
	at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:117)
	at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:141)
	at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:196)
	at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:52)
java.util.logging.ErrorManager: 4
java.io.FileNotFoundException: /opt/tomcat/logs/host-manager.2018-08-09.log (Permission denied)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at org.apache.juli.FileHandler.openWriter(FileHandler.java:504)
	at org.apache.juli.FileHandler.<init>(FileHandler.java:176)
	at org.apache.juli.AsyncFileHandler.<init>(AsyncFileHandler.java:82)
	at org.apache.juli.AsyncFileHandler.<init>(AsyncFileHandler.java:74)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:601)
	at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:538)
	at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:336)
	at java.util.logging.LogManager$3.run(LogManager.java:399)
	at java.util.logging.LogManager$3.run(LogManager.java:396)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.util.logging.LogManager.readPrimordialConfiguration(LogManager.java:396)
	at java.util.logging.LogManager.access$800(LogManager.java:145)
	at java.util.logging.LogManager$2.run(LogManager.java:345)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.util.logging.LogManager.ensureLogManagerInitialized(LogManager.java:338)
	at java.util.logging.LogManager.getLogManager(LogManager.java:378)
	at java.util.logging.Logger.demandLogger(Logger.java:448)
	at java.util.logging.Logger.getLogger(Logger.java:502)
	at org.apache.juli.logging.DirectJDKLog.<init>(DirectJDKLog.java:68)
	at org.apache.juli.logging.DirectJDKLog.getInstance(DirectJDKLog.java:188)
	at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:117)
	at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:141)
	at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:196)
	at org.apache.catalina.startup.Bootstrap.<clinit>(Bootstrap.java:52)
09-Aug-2018 03:44:37.951 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.5.32
09-Aug-2018 03:44:37.953 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jun 20 2018 19:50:35 UTC
09-Aug-2018 03:44:37.953 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.5.32.0
09-Aug-2018 03:44:37.953 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
09-Aug-2018 03:44:37.953 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.4.0-112-generic
09-Aug-2018 03:44:37.953 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
09-Aug-2018 03:44:37.953 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-8-openjdk-amd64/jre
09-Aug-2018 03:44:37.953 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_171-8u171-b11-1~deb9u1-b11
09-Aug-2018 03:44:37.954 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
09-Aug-2018 03:44:37.954 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /opt/tomcat
09-Aug-2018 03:44:37.954 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /opt/tomcat
09-Aug-2018 03:44:37.954 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties
09-Aug-2018 03:44:37.954 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
09-Aug-2018 03:44:37.954 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
09-Aug-2018 03:44:37.954 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
09-Aug-2018 03:44:37.954 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
09-Aug-2018 03:44:37.955 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
09-Aug-2018 03:44:37.955 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/opt/tomcat
09-Aug-2018 03:44:37.955 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/opt/tomcat
09-Aug-2018 03:44:37.955 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/opt/tomcat/temp
09-Aug-2018 03:44:37.955 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.17] using APR version [1.5.2].
09-Aug-2018 03:44:37.955 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
09-Aug-2018 03:44:37.955 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
09-Aug-2018 03:44:37.962 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.0f  25 May 2017]
09-Aug-2018 03:44:38.159 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
09-Aug-2018 03:44:38.173 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
09-Aug-2018 03:44:38.181 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
09-Aug-2018 03:44:38.182 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
09-Aug-2018 03:44:38.182 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 931 ms
09-Aug-2018 03:44:38.213 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
09-Aug-2018 03:44:38.213 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.32
09-Aug-2018 03:44:38.218 SEVERE [Catalina-startStop-1] org.apache.catalina.startup.HostConfig.beforeStart Unable to create directory for deployment: [/opt/tomcat/conf/Catalina/localhost]
09-Aug-2018 03:44:38.221 SEVERE [Catalina-startStop-1] org.apache.catalina.valves.AccessLogValve.open Failed to open access log file [/opt/tomcat/logs/localhost_access_log.2018-08-09.txt]
 java.io.FileNotFoundException: /opt/tomcat/logs/localhost_access_log.2018-08-09.txt (Permission denied)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at org.apache.catalina.valves.AccessLogValve.open(AccessLogValve.java:651)
	at org.apache.catalina.valves.AccessLogValve.startInternal(AccessLogValve.java:685)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.StandardPipeline.startInternal(StandardPipeline.java:182)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:955)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1421)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1411)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

09-Aug-2018 03:44:38.238 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/webapps/jolokia.war]
09-Aug-2018 03:44:38.274 SEVERE [localhost-startStop-1] org.apache.catalina.startup.ContextConfig.beforeStart Exception fixing docBase for context [/jolokia]
 java.io.IOException: Unable to create the directory [/opt/tomcat/webapps/jolokia]
	at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:115)
	at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:605)
	at org.apache.catalina.startup.ContextConfig.beforeStart(ContextConfig.java:738)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:301)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
	at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:395)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:149)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:754)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
	at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:985)
	at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

mac works

docker run -it -e USER_ID=1006 -e GROUP_ID=1006 my-tomcat:8.5-jre8-slim
Starting with UID : 1006
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /docker-java-home/jre
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
09-Aug-2018 03:30:46.272 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.5.32
09-Aug-2018 03:30:46.275 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Jun 20 2018 19:50:35 UTC
09-Aug-2018 03:30:46.275 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.5.32.0
09-Aug-2018 03:30:46.276 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux
09-Aug-2018 03:30:46.276 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            4.9.87-linuxkit-aufs
09-Aug-2018 03:30:46.276 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
09-Aug-2018 03:30:46.277 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /usr/lib/jvm/java-8-openjdk-amd64/jre
09-Aug-2018 03:30:46.277 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_171-8u171-b11-1~deb9u1-b11
09-Aug-2018 03:30:46.278 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
09-Aug-2018 03:30:46.278 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /opt/tomcat
09-Aug-2018 03:30:46.279 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /opt/tomcat
09-Aug-2018 03:30:46.280 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties
09-Aug-2018 03:30:46.280 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
09-Aug-2018 03:30:46.281 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
09-Aug-2018 03:30:46.281 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
09-Aug-2018 03:30:46.282 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
09-Aug-2018 03:30:46.282 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
09-Aug-2018 03:30:46.282 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/opt/tomcat
09-Aug-2018 03:30:46.283 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/opt/tomcat
09-Aug-2018 03:30:46.283 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/opt/tomcat/temp
09-Aug-2018 03:30:46.284 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.17] using APR version [1.5.2].
09-Aug-2018 03:30:46.284 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
09-Aug-2018 03:30:46.285 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
09-Aug-2018 03:30:46.296 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.0f  25 May 2017]
09-Aug-2018 03:30:46.427 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
09-Aug-2018 03:30:46.452 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
09-Aug-2018 03:30:46.465 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
09-Aug-2018 03:30:46.467 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
09-Aug-2018 03:30:46.468 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 705 ms
09-Aug-2018 03:30:46.501 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
09-Aug-2018 03:30:46.502 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.32
09-Aug-2018 03:30:46.542 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/webapps/jolokia.war]
09-Aug-2018 03:30:46.921 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
09-Aug-2018 03:30:47.106 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/tomcat/webapps/jolokia.war] has finished in [563] ms
09-Aug-2018 03:30:47.107 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/opt/tomcat/webapps/ROOT]
09-Aug-2018 03:30:47.125 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/opt/tomcat/webapps/ROOT] has finished in [19] ms
09-Aug-2018 03:30:47.132 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
09-Aug-2018 03:30:47.165 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
09-Aug-2018 03:30:47.169 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 700 ms

@hanrw
Copy link
Author

hanrw commented Aug 9, 2018

seems that issue with Storage Driver: aufs

is it a bug?

it's fixed by using overlay2

{
  "storage-driver": "overlay2"
}

@tianon
Copy link
Member

tianon commented Aug 10, 2018

Yes, sounds like this is an unfortunate quirk of AUFS -- it sometimes has issues with removing files in later layers only to add them back again, or changing permissions in later layers. I'd recommend moving away from AUFS, especially since the next major release of Docker Desktop won't support AUFS anymore (https://docs.docker.com/docker-for-windows/release-notes/#docker-community-edition-18060-ce-win70-2018-07-25).

@tianon tianon closed this as completed Aug 10, 2018
@hanrw
Copy link
Author

hanrw commented Aug 21, 2018

Good news.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Usability question, not directly related to an error with the image
Projects
None yet
Development

No branches or pull requests

3 participants