运行 带有 Gradle Docker 容器的 Gretty 项目

Running Gretty project with Gradle Docker container

是否可以运行Gretty projects in Docker Gradle容器?

通常 Gretty 任务 tomcatRun 会启动 Tomcat 应用服务器,您可以在 http://localhost:8080/app-name 浏览该应用。使用 Docker Gradle 图像,任务成功启动,但容器在此之后立即终止。

重现问题的步骤:

  1. Install Docker.
  2. 克隆 https://github.com/haba713/hello_gretty.
  3. cd hello_gretty
  4. 安装Gradle包装器: docker run --rm -u gradle -v "$PWD":/home/gradle/project -w /home/gradle/project gradle gradle wrapper
  5. 运行任务tomcatRun./gradlew tomcatRun
  6. 浏览http://localhost:8080/hello_gretty.
  7. 在终端中按回车键终止任务。
  8. 运行 任务 tomcatRun 和 Gradle Docker 图片: docker run --rm -u gradle -p 8080:8080 -v "$PWD":/home/gradle/project -w /home/gradle/project gradle gradle tomcatRun
  9. 任务 tomcatRun 已启动(需要一些时间)但由于某种原因 容器在那之后立即终止。也许任务完成了 不按任何键。

我还创建了一个关于这个问题的Docker issue

-t--tty添加到docker命令保持Tomcat运行。如果你想用 "any key" 停止 Tomcat,还要添加 -i--interactive,正如 Gretty 所说:"Press any key to stop the server."

docker run --rm -u gradle -it -p 8080:8080 -v "$PWD":/home/gradle/project -w /home/gradle/project gradle gradle tomcatRun

谢谢 David Maze 的帮助。