我的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 c
和echo sleep
在运行时执行现在,您可以在文件中使用结构类似的COMMAND,它应该可以工作。