Problem setting locale
claudiofus opened this issue · 6 comments
I think there's a problem passing values in docker-compose.yml
because Tomcat 9 doesn't take multiple parameter from JAVA_OPTS
. Maybe this error is related to #77
I have tried switching params in JAVA_OPTS
but didn't work.
Here is my docker-compose.yml
:
version: '3.7'
services:
db:
container_name: mariadb
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: 12345
MYSQL_DATABASE: gestione_cantieri
ports:
- "3306:3306"
volumes:
- ./docker/db:/docker-entrypoint-initdb.d
tomcat:
container_name: tomcat
image: tomcat:9.0.31-jdk13-openjdk-oracle
environment:
- JAVA_OPTS="-Djdbcurl=jdbc:mariadb://db:3306/MYDB?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false -Duser.language=it -Duser.region=IT"
ports:
- "8000:8080"
volumes:
- ./docker/tomcat/GCRest.war:/usr/local/tomcat/webapps/GCRest.war
- ./docker/tomcat/context.xml:/usr/local/tomcat/conf/context.xml
links:
- db
Here is my context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<Resource name="jdbc/MYDB"
auth="Container"
type="javax.sql.DataSource"
username="root"
password="MYPWD"
driverClassName="org.mariadb.jdbc.Driver"
url="${jdbcurl}"
maxTotal="8"
maxIdle="4"/>
</Context>
I'm not sure of exactly what is a valid formatting, but adjusting your JAVA_OPTS to just -Djdbcurl=jdbc:mariadb://db:3306/MYDB?serverTimezone=UTC -Duser.language=it -Duser.region=IT
seems to work
And outputs in the logs:
04-Mar-2020 18:37:17.567 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Duser.language=it
04-Mar-2020 18:37:17.567 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Duser.region=IT
$ docker run -d --name tomcat -e JAVA_OPTS="-Djdbcurl=jdbc:mariadb://db:3306/MYDB?serverTimezone=UTC -Duser.language=it -Duser.region=IT" tomcat:9.0.31-jdk13-openjdk-oracle
aefc8f061c4823fd89aa601d95211b7313e231e2a25bbf795091126ee74d08a5
$ docker logs -f tomcat
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
04-Mar-2020 18:37:17.550 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.31
04-Mar-2020 18:37:17.553 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Feb 5 2020 19:32:12 UTC
04-Mar-2020 18:37:17.553 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.31.0
04-Mar-2020 18:37:17.554 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
04-Mar-2020 18:37:17.554 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 4.15.0-65-generic
04-Mar-2020 18:37:17.554 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
04-Mar-2020 18:37:17.554 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/java/openjdk-13
04-Mar-2020 18:37:17.554 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 13.0.2+8
04-Mar-2020 18:37:17.554 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
04-Mar-2020 18:37:17.554 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
04-Mar-2020 18:37:17.555 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
04-Mar-2020 18:37:17.566 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
04-Mar-2020 18:37:17.566 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
04-Mar-2020 18:37:17.566 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
04-Mar-2020 18:37:17.566 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
04-Mar-2020 18:37:17.567 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
04-Mar-2020 18:37:17.567 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdbcurl=jdbc:mariadb://db:3306/MYDB?serverTimezone=UTC
04-Mar-2020 18:37:17.567 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Duser.language=it
04-Mar-2020 18:37:17.567 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Duser.region=IT
04-Mar-2020 18:37:17.567 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
04-Mar-2020 18:37:17.567 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
04-Mar-2020 18:37:17.567 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
04-Mar-2020 18:37:17.567 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
04-Mar-2020 18:37:17.568 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
04-Mar-2020 18:37:17.568 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
04-Mar-2020 18:37:17.568 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
04-Mar-2020 18:37:17.568 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.23] using APR version [1.4.8].
04-Mar-2020 18:37:17.568 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
04-Mar-2020 18:37:17.568 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
04-Mar-2020 18:37:17.573 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.0.2k-fips 26 Jan 2017]
04-Mar-2020 18:37:17.778 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
04-Mar-2020 18:37:17.808 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [404] milliseconds
04-Mar-2020 18:37:17.836 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
04-Mar-2020 18:37:17.836 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.31]
04-Mar-2020 18:37:17.842 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
04-Mar-2020 18:37:17.852 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [43] milliseconds
I would hazard a guess that it is the semicolon in the url. The catalina.sh does exec
/eval
so I think you need some extra quotes. Maybe this?
- JAVA_OPTS="-Djdbcurl='jdbc:mariadb://db:3306/MYDB?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false' -Duser.language=it -Duser.region=IT"
Adding the extra quotes works
$ docker run -d --name tomcat -e JAVA_OPTS="-Djdbcurl='jdbc:mariadb://db:3306/MYDB?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false' -Duser.language=it -Duser.region=IT" tomcat:9.0.31-jdk13-openjdk-oracle
475498d4c0de199111524d92698ebbbe9138687157c8b19e52c6e9270fbba1b5
$ docker logs -f tomcat
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
04-Mar-2020 23:23:40.154 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.31
04-Mar-2020 23:23:40.157 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Feb 5 2020 19:32:12 UTC
04-Mar-2020 23:23:40.157 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.31.0
04-Mar-2020 23:23:40.157 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
04-Mar-2020 23:23:40.158 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 4.15.0-65-generic
04-Mar-2020 23:23:40.158 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
04-Mar-2020 23:23:40.158 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/java/openjdk-13
04-Mar-2020 23:23:40.158 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 13.0.2+8
04-Mar-2020 23:23:40.158 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation
04-Mar-2020 23:23:40.158 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
04-Mar-2020 23:23:40.158 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
04-Mar-2020 23:23:40.168 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
04-Mar-2020 23:23:40.168 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
04-Mar-2020 23:23:40.168 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
04-Mar-2020 23:23:40.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
04-Mar-2020 23:23:40.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
04-Mar-2020 23:23:40.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdbcurl=jdbc:mariadb://db:3306/MYDB?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false
04-Mar-2020 23:23:40.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Duser.language=it
04-Mar-2020 23:23:40.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Duser.region=IT
04-Mar-2020 23:23:40.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
04-Mar-2020 23:23:40.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
04-Mar-2020 23:23:40.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
04-Mar-2020 23:23:40.169 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
04-Mar-2020 23:23:40.170 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
04-Mar-2020 23:23:40.170 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
04-Mar-2020 23:23:40.170 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
04-Mar-2020 23:23:40.170 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.23] using APR version [1.4.8].
04-Mar-2020 23:23:40.170 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
04-Mar-2020 23:23:40.170 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
04-Mar-2020 23:23:40.173 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.0.2k-fips 26 Jan 2017]
04-Mar-2020 23:23:40.390 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
04-Mar-2020 23:23:40.423 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [416] milliseconds
04-Mar-2020 23:23:40.459 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
04-Mar-2020 23:23:40.460 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.31]
04-Mar-2020 23:23:40.467 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
04-Mar-2020 23:23:40.479 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [54] milliseconds
Closing since this is resolved
Thank you for your answer. I tried with docker run
and it works so Tomcat is able to recognize 3 arguments. The problem occurs when I use docker-compose up
both
- JAVA_OPTS="-Djdbcurl='jdbc:mariadb://db:3306/MYDB?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false' -Duser.language=it -Duser.region=IT"
and
- JAVA_OPTS="-Djdbcurl='jdbc:mariadb://db:3306/MYDB?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false' -Duser.language=it -Duser.region=IT"
Tomcat is not able to recognize 3 arguments but just one as the logs shows:
04-Mar-2020 23:50:22.484 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdbcurl='jdbc:mariadb://db:3306/MYDB?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false' -Duser.language=it -Duser.region=IT
04-Mar-2020 23:55:55.609 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdbcurl='jdbc:mariadb://db:3306/MYDB?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false' -Duser.language=it -Duser.region=IT
Try moving the quotes out further or using the alternate env
syntax:
- "JAVA_OPTS=-Djdbcurl='jdbc:mariadb://db:3306/MYDB?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false' -Duser.language=it -Duser.region=IT"
or
JAVA_OPTS: "-Djdbcurl='jdbc:mariadb://db:3306/MYDB?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=false' -Duser.language=it -Duser.region=IT"
Thank you @tianon, both works.