Как правило, контейнер Docker должен быть настроен для запуска определенной программы c. В большинстве случаев по умолчанию не должна быть интерактивная оболочка или искусственная команда tail -f /dev/null
. В вашем примере на самом деле ничего не работает с программой, которую вы устанавливаете. Вы должны изменить конец Dockerfile, чтобы он действительно запускался
FROM python:3.8-alpine
RUN pip install scar
CMD scar
и предоставлять такие данные, как учетные данные через volumes:
монтирование. (Подумайте, не скомпрометировала ли ваша учетная запись AWS в образе Docker; любой, у кого есть это изображение, может делать все, что ему разрешено в соответствии с вашими разрешениями IAM.)
В приведенном вами примере комбинация ENTRYPOINT
и command:
приводит к бессмысленной командной строке. В документации Dockerfile по Понимание того, как CMD и ENTRYPOINT взаимодействуют , есть технические подробности. Поскольку вы указали формат оболочки ENTRYPOINT
, он будет заключен в sh -c
, а затем к этому добавляется command:
из файла docker-compose.yml
. Вы получите что-то вроде
/bin/sh -c '/bin/sh' tail -f /dev/null
, которое просто запускает оболочку ("tail ...
" игнорируется), и, поскольку нет ввода, оно немедленно завершается.
В общем Docker Compose больше ориентирован на запуск долго работающих приложений, таких как базы данных или веб-серверы. В документации SCAR есть пример запуска инструмента в Docker. Однако для таких инструментов командной строки, учитывая необходимость выполнения таких действий, как ручное получение учетных данных pu sh AWS с хоста в контейнер и наличие root -эквивалентных разрешений для запуска инструмента вообще, вы можете удобнее запускать инструмент непосредственно на хосте, возможно, в виртуальной среде Python.