gpt4 book ai didi

java - 如何防止Dockerfile中的脚本退出?

转载 作者:行者123 更新时间:2023-12-02 02:01:20 25 4
gpt4 key购买 nike

我的 Dockerfile 是:

FROM maven:3.3.9-jdk-8-alpine as build-env
COPY . /EscomledML
WORKDIR EscomledML
RUN mvn package

FROM openjdk:8-jdk-alpine
WORKDIR /EscomledML
ADD . /EscomledML
ADD ./lib EscomledML/lib
ADD ./config EscomledML/config
ADD ./config EscomledML/home/escomled/escomled_server/config
ADD ./MLScripts EscomledML/MLScripts
ADD target/escomled-machine-learning-0.0.1-SNAPSHOT-jar-with-dependencies.jar EscomledML/lib/escomled-machine-learning-0.0.1-SNAPSHOT-jar-with-dependencies.jar
EXPOSE 8085
RUN ["sh", "EscomledML/MLScripts/escomled_data_grid.sh"]
RUN ["sh", "EscomledML/MLScripts/escomled_dirwatcher.sh"]
RUN ["sh", "EscomledML/MLScripts/escomled_startmap.sh"]
RUN ["sh", "EscomledML/MLScripts/escomled_ml.sh"]

这些脚本基本上将依赖项 jar 添加到类路径并启动所需的类,例如。 “java ${ARGS} -classpath “${CLASSPATH}”com.escomled.blackboard.main.DataGridServer”。

当我运行docker-compose up --build时,我没有从脚本中获得任何输出。

docker ps -a 返回

CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                      PORTS                                        NAMES
ce690dbba3ab escomled-ml "/bin/sh" 2 minutes ago Exited (0) 2 minutes ago desktop_escomled-ml_1

最佳答案

对于以下 dockerfile:

FROM ubuntu:18.04

RUN echo a
CMD ["bash","-c","echo b && echo c; while true; do sleep 5; echo sleep; done"];

运行以下命令:

docker build -t test1 . && docker run test1

你可以注意到:

  • echo a 在构建时执行
  • echo becho c 以及 echo sleep 在运行时执行

现在您可以在文件中使用类似结构的命令,它应该可以工作。

关于java - 如何防止Dockerfile中的脚本退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51534495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com