#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"]