Docker Запускает файл Java -JAR для создания пространств ключей Cassandra. Но он не создает

#docker #cassandra #dockerfile

#docker #кассандра #dockerfile

Вопрос:

Я попытался запустить CMD «java -jar /tmp / migration.jar update_schema atlas » для создания пространства ключей в cassandra. Но он не создает никаких пространств ключей в cassandra. Но если я выполню ту же команду в командной строке, это создаст какую-либо идею, в чем проблема?

Мой файл 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  amp;amp;   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"]