Вы не можете запускать службы в Dockerfile.
В вашем случае происходит то, что ваш Dockerfile работает RUN localstack start
. Это продолжается, запускает выбранный набор служб и продолжает работу в ожидании соединений. Между тем, файл Dockerfile ожидает команды, которую вы запустили в fini sh, прежде чем продолжить.
Обычный ответ на это - запуск серверов и клиентов в отдельных контейнерах (или запуск сервера в контейнере и запускать клиентов прямо с вашего хоста). В этом случае уже есть localstack/localstack
Docker изображение и предварительно созданная Docker Настройка Compose, поэтому вы можете просто запустить ее:
curl -LO https://github.com/localstack/localstack/raw/master/docker-compose.yml
docker-compose up
The localstack GitHub repo содержит дополнительную информацию по его использованию.
Если вы хотите использовать с этим приложение на основе Boto, самый простой способ - добавить его в тот же файл docker-compose.yml
(или, наоборот, добавьте Localstack в уже имеющуюся настройку Compose). На этом этапе вы можете использовать обычное Docker межконтейнерное взаимодействие, чтобы достичь макета AWS, но вы должны настроить это в своем коде
s3 = boto3.client('s3',
endpoint_url='http://localstack:4566')
Вы должны в любом случае внести аналогичные изменения, чтобы использовать localstack , поэтому единственная разница - это имя хоста, которое вы устанавливаете.