如何在构build映像时自动运行Docker容器?
如果我错过了一些明显的事情,我对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 run -it --rm -p 8888:8080 tomcat:8.0
我已经在这里从官方的Tomcat在线了 。 我注意到他们提到这个Run the default Tomcat server (CMD ["catalina.sh", "run"]):
但我不知道如何实现这一点。
什么是Dockerfile,是创build一个图像,而不是一个容器。
当你做docker build -t <tagname> .
并会看到结果(标记),如果你运行docker images
。
然后,您可以运行该图像来创build一个容器。
您也可以指定一个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
这将从您的图像中创build一个容器,并运行CMD
所说的任何内容。 你可以用docker exec
在里面docker exec
docker exec -it my_tomcat_container bash
但它会继续运行(因为-d
标志),并在docker ps
显示。