【发布时间】:2018-07-25 18:16:25
【问题描述】:
我正在将 Tomcat 应用程序部署到 Docker 上,它目前正在运行,但前提是我初始化了一些配置并在启动容器后手动运行它。
我的 Dockerfile 的简化版本如下所示:
FROM tomcat:9.0.10-jre8
COPY setEnv.sh /usr/local/tomcat/bin
RUN chmod +x /usr/local/tomcat/bin/setEnv.sh
ADD application.war /usr/local/tomcat/webapps/
RUN /usr/local/tomcat/bin/setEnv.sh # set $JAVA_OPTS
CMD /usr/local/tomcat/bin/startup.sh # start Tomcat application
我用
启动容器docker run -ti -p 8080:8080 --rm --name app app-image
但是当我启动容器时,没有任何反应,容器就退出了。我尝试使用 -d 标签,但没有帮助。
我可以让它工作的唯一方法是我运行:
docker run -ti -p 8080:8080 --rm --name app app-image bash
当 shell 脚本打开时,$JAVA_OPTS 是空的,所以我必须手动运行 setEnv.sh,然后在手动运行 startup.sh 后,我的应用程序成功部署到 Docker 上。
显然这并不理想,因为我不想每次都手动运行 setEnv.sh。但是,如果我能够通过 Dockerfile 运行 setEnv.sh 以便在运行时设置 $JAVA_OPTS,那应该可以解决我的问题。
我需要在此处进行哪些更改才能使其正常工作?是我的 Dockerfile 问题还是我运行容器的方式有问题?
【问题讨论】:
标签: docker tomcat containers dockerfile