tomcat - 如何在镜像构建时/构建后自动运行 docker 容器?

标签 tomcat docker dockerfile

我是 docker 的新手,如果我遗漏了一些明显的东西,我深表歉意

我对 Dockerfile 的计划。

  1. 拉tomcat:7.0
  2. 启动服务器
  3. 下载帮助程序文件并解压缩。
  4. 下载所需的 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 将会看到结果(标记) .

然后您可以运行该镜像 来创建容器。

您还可以指定 CMDDockerfile 中运行(默认情况下) .那将是(我认为)

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/

相关文章:

java - Tomcat 权限被拒绝/home/ubuntu 无法 GET,POST

postgresql - Docker-Compose postgres 升级 initdb : error: directory "/var/lib/postgresql/data" exists but is not empty

docker - 使用CVS启动centos docker容器时出错

docker - 在 docker-compose.yaml 中设置 security_opt 不起作用

apache friends xampp tomcat - 如何将新目录添加到 webapps 文件夹

tomcat - 为 Team Foundation Server 扩展配置 CORS

java - 使用 LDAP 的 Tomcat 身份验证,只有用户名,没有密码

docker - 将镜像从Azure容器注册表部署到Azure Linux虚拟机

docker - 在 Windows 上连接到 docker 容器

python - standard_init_linux.go :211: exec user process caused "no such file or directory"?