我的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添加到classpath并启动所需的类,例如。 “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 b以及echo cecho sleep在运行时执行

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

    07-24 09:45
    查看更多