Многоступенчатый Docker с AWS CLI

Я настраиваю многоступенчатую сборку в Docker, где мне нужно извлечь некоторые данные из удаленного образа. В этом удаленном образе я вижу, что они установили AWS CLI, используя следующий набор команд, чтобы превратить его в образ на основе Alpine:

RUN apk --no-cache add python3 && \
    pip3 install awscli && \
    aws --version

Копия говорит, что все в порядке

COPY --from=remote_setup /usr/bin/terraform /usr/bin/terraform
COPY --from=remove_setup /usr/bin/aws /usr/bin/aws

Terraform здесь отлично работает, а AWS - нет. Результат выглядит так:

/ # terraform -v
Terraform v0.12.2

/ # ls -lh /usr/bin | grep aws
-rwxr-xr-x    1 root     root         817 Jun 19 19:51 aws
/ # aws --version
/bin/sh: aws: not found

Если я добавлю python3, то получу эту ошибку:

/ # aws --version
Traceback (most recent call last):
  File "/usr/bin/aws", line 19, in <module>
    import awscli.clidriver
ModuleNotFoundError: No module named 'awscli'

Есть ли уловка для копирования всех данных из команды в этом конкретном слое на мой новый, или для простоты я должен просто установить Python и интерфейс командной строки AWS в свой образ?

Спасибо!


person el n00b    schedule 19.06.2019    source источник
comment
Разве вы не можете вместо этого установить python и awscli? Установка гарантирует, что он загрузит все зависимости и настроит необходимые конфигурации.   -  person Vineet Palan    schedule 20.06.2019


Ответы (1)


pip - стандартный менеджер пакетов Python. Помимо установки сценария-оболочки в /usr/bin (или в каталог bin текущей среды), он также устанавливает изрядную часть кода библиотеки под деревом .../lib/pythonX.Y/site-packages/.... Кроме того, пакетам разрешено зависеть от других пакетов, поэтому это не будет просто одним каталогом в каталоге site-packages.

Вкратце: вам понадобится интерпретатор Python и все, что pip install устанавливает, поэтому вы должны запустить эту команду самостоятельно в производном образе.

person David Maze    schedule 19.06.2019