Докер многоступенчатый с AWS CLI - PullRequest
0 голосов
/ 19 июня 2019

Я устанавливаю многоступенчатую сборку в Docker, где мне нужно извлечь некоторые данные из удаленного образа. В этом удаленном образе я вижу, что они установили интерфейс командной строки AWS, используя следующий набор команд, чтобы вставить его в образ на основе 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 в свой образ?

Спасибо!

1 Ответ

0 голосов
/ 20 июня 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...