我通过运行此命令为Tomcat提取了官方Docker镜像。
docker run -it --rm tomcat:8.0
通过将其用作基本图像,我需要在tomcat
webapps
文件夹中构建包含war文件的新图像。我像这样创建了Dockerfile。
From tomcat8
ADD warfile /usr/local/tomcat
当我通过构建图像运行此Dockerfile时,我无法看到Tomcat首页。
有人可以告诉我如何将我的warfile添加到官方Tomcat图像webapp文件夹。
答案 0 :(得分:65)
从回购文件中读取,你会做那样的事情
FROM tomcat
MAINTAINER xyz
ADD your.war /usr/local/tomcat/webapps/
CMD ["catalina.sh", "run"]
然后使用docker build -t yourName <path-to-dockerfile>
运行它:
docker run --rm -it -p 8080:8080 yourName
--rm
会在您停止后立即删除容器-p
将端口转发给您的主机(或者如果您将boot2docker用于此IP)-it
允许交互模式,因此您可以查看是否部署了某些内容答案 1 :(得分:20)
在@ daniel的答案的基础上,如果你想将你的WAR部署到tomcat的根目录,我就这样做了:
FROM tomcat:7-jre7
MAINTAINER xyz
RUN ["rm", "-fr", "/usr/local/tomcat/webapps/ROOT"]
COPY ./target/your-webapp-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh", "run"]
删除现有的根webapp,将WAR复制到ROOT.war文件名,然后执行tomcat。
答案 2 :(得分:2)
如何查看webapps
文件夹?
webapps
文件夹位于docker容器中。
如果要访问webapps
容器,可以在容器中安装主机目录,以将其用作webapps
文件夹。这样您就可以访问文件而无需访问docker。
详情请见here
要访问日志,您可以在运行容器时执行此操作,例如
docker run -rm -it -p 8080:8080 **IMAGE_NAME** /path/to/tomcat/bin/catalina.sh && tail -f /path/to/tomcat/logs
或者启动Docker容器,然后执行以下操作:
docker exec -it **CONTAINER_ID** tail -f /path/to/tomcat/logs
答案 3 :(得分:2)
docker run -it --rm --name MYTOMCAT -p 8080:8080 -v ... / wars:/ usr / local / tomcat / webapps / tomcat:8.0
其中wars文件夹包含要部署的战争
答案 4 :(得分:1)
如果您正在使用spring mvc项目,那么您需要服务器运行您的应用程序,假设您使用的是tomcat,那么您需要您的应用程序使用的tomcat的基本映像,您可以通过FROM命令指定该映像。
您可以使用ENV命令设置环境变量。
您还可以使用RUN命令,该命令在Docker映像构建期间执行。 例如,授予webapps文件夹读写权限,以使Tomcat解除War文件的压缩
RUN chmod -R 777 $CATALINA_HOME/webapps
另外一个命令是CMD。无论您在CMD命令中指定什么内容,它都会在容器运行时执行。您可以使用双引号(“”)以逗号(,)分隔,以在CMD命令中指定选项。 例如
CMD ["catalina.sh","start"]
(注意:请记住,在创建映像时执行RUN命令,在运行容器时执行CMD,这会使新用户感到困惑)。
这是我的Dockerfile-
FROM tomcat:9.0.27-jdk8-openjdk
VOLUME /tmp
RUN chmod -R 777 $CATALINA_HOME/webapps
ENV CATALINA_HOME /usr/local/tomcat
COPY target/*.war $CATALINA_HOME/webapps/myapp.war
EXPOSE 8080
CMD ["catalina.sh","run"]
使用命令构建图像
docker build -t imageName <path_of_Dockerfile>
使用命令检查您的Docker映像
docker images
使用命令运行图像
docker run -p 9999:8080 imageName
这里8080是tomcat端口,应用程序可以在9999端口上访问
尝试通过
访问您的应用程序 localhost:9999/myapp/