Как запустить dynamodb-local в Docker без флага -InMemory

#docker #amazon-dynamodb #amazon-dynamodb-local

#docker #amazon-dynamodb #amazon-dynamodb-local

Вопрос:

Согласно документам, существует 2 флага, которые влияют на запуск dynamodb-local

-inMemory -> сохраняет все данные только в ОЗУ, когда служба завершается — все данные удаляются

-sharedDB -> позволяет записывать все логины в один и тот же общий файл

нет переключений -> каждый логин с учетными данными сохраняет данные в другом файле — это поведение по умолчанию

Однако, если вы посмотрите в docker.hub вы увидите, что поведение по умолчанию при запуске dynamodb-local в docker — с -inMemory флагом. но я этого не хочу, мне нужно реальное поведение по умолчанию. Как я могу его переопределить?

Ответ №1:

Ну, было очень сложно найти его, но это очень простое решение.

Согласно этому замечательному сообщению, мы можем легко переопределить [CMD] часть изображения, извлеченного из docker.

Нам просто нужно добавить аргументы после запуска docker. Это команда, которую я использовал:

 docker run -p 8000:8000 --name local-dynamodb amazon/dynamodb-local -jar DynamoDBLocal.jar
  

-p предназначен для определения порта для отображения, чтобы ваше приложение могло связаться с dynamodb-local на порту 8000

--name предназначен для присвоения изображению читаемого имени

все, что после amazon/dynamodb-local , является переопределяющей частью, предопределенной точкой входа JAVA , поэтому нам просто нужно добавить -jar переключатель, указать имя файла для запуска и опустить этот злой -inMemory переключатель

Можно добавить флаг -sharedDb , чтобы все учетные данные подключались к одной и той же БД, в противном случае — по умолчанию используется другой файл для каждого набора учетных данных (включая регион!)

Всем удачи! и счастливого кодирования