我有一个Tomcat 8 / MySQL的应用程序,我想在泊坞窗容器中运行。我今天运行的Ubuntu 16.04测试和生产,并希望使用的Ubuntu 16.04“最新”为基础FROM
我的码头工人文件,并从那里添加Tomcat的8和MySQL。
我知道我能得到一个Tomcat 8泊坞窗文件从https://hub.docker.com/_/tomcat/我的基础,但我没有看到这些Ubuntu的基本操作系统,我想保持一致与Ubuntu。此外,它似乎有点怪到MySQL添加到Tomcat容器。
我通过这个问题的工作和我张贴我的研究结果情况下,它可以帮助其他人有类似的问题。
不建议在一个容器中运行multiple services(tomcat的/ MySQL的):简短的回答。是的,有supervisor.d等,但并不鼓励这样。还有baseimage-docker如果你是在一个容器致力于多种服务。
在这个答案的其余部分显示了如何得到它的工作,如果你真的确定?
在Ubuntu 16.04 Tomcat的8发行版本不幸只配置为作为服务(在下面详细描述)上运行。与运行在泊坞窗容器中的服务问题在整个堆叠交换很多帖子记录好(这是鼓励)。我可以通过添加一个“尾巴-f /var/log/tomcat8/catalina.out”到年底获得tomcat的8个工作作为服务“的服务tomcat8启动”命令,并开始与“--cap容器-add SYS_PTRACE”选项。
CMD service tomcat8 start && tail -f /var/log/tomcat8/catalina.out
开始tomcat8推荐的方法是在/usr/share/tomcat8/bin
使用的命令。但是,发行版本的软链接是不正确的,服务器无法启动。
使用命令./catalina.sh run
或./startup.sh
都产生错误,如这样的:
SEVERE: Cannot find specified temporary folder at /usr/share/tomcat8/temp
WARNING: Unable to load server configuration from [/usr/share/tomcat8/conf/server.xml]
SEVERE: Cannot start server. Server instance is not configured.
该发行版跨/usr/share/tomcat8
和/var/lib/tomcat8
用于分隔catalina.sh
的bin文件(startup.sh
和config
)和logs
在/var/lib/tomcat8
软链接分裂tomcat8。这使得这些命令将失败。
在/usr/share/tomcat8
文件:
root@85d5fe47b66a:/usr/share/tomcat8# ls -la
total 32
drwxr-xr-x 4 root root 4096 Mar 9 22:18 .
drwxr-xr-x 117 root root 4096 Mar 9 23:29 ..
drwxr-xr-x 2 root root 4096 Mar 9 22:18 bin
-rw-r--r-- 1 root root 39 Mar 31 2017 defaults.md5sum
-rw-r--r-- 1 root root 1929 Apr 10 2017 defaults.template
drwxr-xr-x 2 root root 4096 Mar 9 22:18 lib
-rw-r--r-- 1 root root 53 Mar 31 2017 logrotate.md5sum
-rw-r--r-- 1 root root 118 Apr 10 2017 logrotate.template
在/var/lib/tomcat8
文件:
root@85d5fe47b66a:/var/lib/tomcat8# ls -la
total 16
drwxr-xr-x 4 root root 4096 Mar 9 22:18 .
drwxr-xr-x 41 root root 4096 Mar 9 23:29 ..
lrwxrwxrwx 1 root root 12 Sep 28 14:43 conf -> /etc/tomcat8
drwxr-xr-x 2 tomcat8 tomcat8 4096 Sep 28 14:42 lib
lrwxrwxrwx 1 root root 17 Sep 28 14:43 logs -> ../../log/tomcat8
drwxrwxr-x 3 tomcat8 tomcat8 4096 Mar 9 22:18 webapps
lrwxrwxrwx 1 root root 19 Sep 28 14:43 work -> ../../cache/tomcat8
运行./version.sh
揭示了两者CATALINA_BASE
和CATALINA_HOME
设置为/usr/share/tomcat8
Using CATALINA_BASE: /usr/share/tomcat8
Using CATALINA_HOME: /usr/share/tomcat8
Using CATALINA_TMPDIR: /usr/share/tomcat8/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.0.32 (Ubuntu)
Server built: Sep 27 2017 21:23:18 UTC
Server number: 8.0.32.0
OS Name: Linux
OS Version: 4.4.0-116-generic
Architecture: amd64
JVM Version: 1.8.0_161-b12
JVM Vendor: Oracle Corporation
设置CATALINA_BASE
明确地/var/lib/tomcat8
内catalina.sh
使用./catalina.sh run
启动Tomcat解决了这个问题。在过去,我或者添加软链接conf
,logs
和work
的/usr/share/tomcat8
目录下,以便它可以找到这些文件,并用catalina.sh run
命令正常启动。
顺便说一句,甚至认为JRE_HOME
显然是错误的version.sh
倾倒以上,该服务能够正常启动(当我追加tail -f
命令如前面所述)。它也开始使用catalina.sh run
当我手动添加正确的CATALINA_BASE
变量catalina.sh
。所以我花了没有时间寻找到为什么会错误地列了出来。
最后,我意识到三两件事:
&& tail -f ...
到CMD结束没有为tomcat8)。catalina.sh
修改版本CATALINA_BASE
的,并将其复制到适当的安装目录或B.2)添加软链接。