【问题标题】:Persisting gradle daemon after docker exec -it <container_name> gradle build在 docker exec -it <container_name> gradle build 之后持久化 gradle 守护进程
【发布时间】:2019-10-17 21:50:02
【问题描述】:

我正在使用 docker exec -it &lt;container_name&gt; gradle build 在 docker 容器中运行 gradle (5.6.2/JDK 11) 构建。这种方法可以正常工作,但是在命令完成后守护进程会被销毁。构建完成后,如何让守护程序在容器中运行?

我试过gradle --forgroundhave learned that this creates incompatible daemons and is an undesirable option

【问题讨论】:

    标签: docker gradle


    【解决方案1】:

    使用 Gradle 无法解决此问题。由于 Docker 容器停止,守护程序会丢失。您应该改为使用交互式外壳:

    docker run --rm -it gradle:5.6.2-jdk11 bash
    

    现在运行 Gradle 命令,该守护进程将在后续命令中重复使用:

    root@014faa72d745:/home/gradle# gradle help
    

    完成后,来自容器的exit

    root@014faa72d745:/home/gradle# exit
    

    注意:您可以使用绑定挂载来获取容器中当前工作目录的文件:

    docker run --rm -it --mount type=bind,src=$PWD,dst=/app -w /app gradle:5.6.2-jdk11 bash
    

    【讨论】:

    • 容器仍在运行。我使用 docker exec 运行构建。构建完成后,守护进程会死掉。如果我使用 docker exec nohup gradle build 运行构建,则守护进程在后台运行。但理想情况下,它应该能够在不采取此类措施的情况下持续存在。
    • 抱歉,我不知道如何解决它。我个人将--no-daemon 选项用于一次性Gradle 任务(相对较快,但仍然很慢)。
    猜你喜欢
    • 2018-12-21
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    相关资源
    最近更新 更多