我是 docker 的新手,如果我遗漏了一些明显的东西,我深表歉意
我对 Dockerfile 的计划。
- 拉tomcat:7.0
- 启动服务器
- 下载帮助程序文件并解压缩。
- 下载所需的 war 文件并将其重命名为 ROOT.war。
我已经通过手动运行这些命令设法做到了这一点。
docker run -it --rm -p 8888:8080 tomcat:8.0
然后手动执行 wget
并重命名,尽管我希望这一切都在 docker 文件中完成。
到目前为止,这是我设法做到的。
FROM tomcat:7.0
RUN /bin/bash -c "cd /usr/local/tomcat/webapps"
RUN /bin/bash -c "wget -O files.zip https://***"
RUN /bin/bash -c "unzip files.zip"
RUN /bin/bash -c "rm -r ROOT"
RUN /bin/bash -c "wget -O ROOT.war https://***"
虽然我不确定如何运行之前的 docker 行
docker run -it --rm -p 8888:8080 tomcat:8.0
我从官方 Tomcat 在线获取了这条线 here .我注意到他们提到了这个 Run the default Tomcat server (CMD ["catalina.sh", "run"]):
但我不知道如何实现它。
最佳答案
Dockerfile 所做的是创建一个图像,而不是容器。
当你做 docker build -t <tagname> .
如果你运行 docker images
将会看到结果(标记) .
然后您可以运行该镜像 来创建容器。
您还可以指定 CMD
在 Dockerfile
中运行(默认情况下) .那将是(我认为)
CMD [ "catalina.sh", "run" ]
所以:
docker build -t my_tomcat_app .
docker run -d -p 8888:8080 --name my_tomcat_container my_tomcat_app
这将从您的图像创建一个容器,并运行 CMD
中的任何内容说。你可以用 docker exec
在里面四处看看
docker exec -it my_tomcat_container bash
但它会继续运行(因为 -d
标志)并显示在 docker ps
中.
关于tomcat - 如何在镜像构建时/构建后自动运行 docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35230266/