2016-09-29 79 views
0

我试图运行CMD“java -jar /tmp/migration.jar update_schema atlas”在cassandra中创建Keyspace。但它没有在cassandra中创建任何密钥空间。但是,如果我在命令行中运行相同的命令,它会创建任何想法什么是什么问题?Docker运行Java -JAR文件以创建Cassandra KeySpaces。但它没有创建

我dockerfile是如下 “从Tomcat:8- jre8

ENV LANG en_US.UTF-8 
ENV COMMAND="update" 
ENV ARGS="--logLevel=debug" 

WORKDIR /usr/local/tomcat/ 

ADD /migration.jar /tmp 
ADD atlas_migration.sh /usr/local/bin/atlas_migration.sh 
CMD ["/bin/sh", "/usr/local/bin/atlas_migration.sh"] 

CMD ENTRYPOINT ["java","-jar","/tmp/migration.jar","update_schema", "atlas"] 
CMD java -jar /tmp/migration.jar update_schema atlas 

ENV CATALINA_OPTS "-Xmx256m -Xms192m" 

EXPOSE 8085 

CMD ./bin/catalina.sh start && tail -f ./logs/catalina.out' 

回答

1

CMD是用于指定在启动时容器应该运行的命令。如果你想在期间运行一个命令的构建,那么执行后的状态会持久在图像中,你需要使用RUN

COPY还优选ADD,因此相关说明应该是:

COPY /migration.jar /tmp 
COPY atlas_migration.sh /usr/local/bin/atlas_migration.sh 
RUN /usr/local/bin/atlas_migration.sh 
RUN ["java","-jar","/tmp/migration.jar","update_schema", "atlas"]