Я пишу Dockerfile
для образа Docker, параметризованного с помощью aws
секретов ключей доступа (я знаю, что лучше всего передавать все секреты как переменные среды во время выполнения, но я просто экспериментируюи не собираю что-то, что я ожидаю запустить в производстве).
Однако, когда я запускаю docker build
, процесс сборки неожиданно завершается неудачей.
Команда, которую я выполняю:
docker build -t foobar . --build-arg aws_access_key_id=SOMETHING --build-arg aws_secret_access_key=SOMETHING_ELSE
Существенная часть Dockerfile
:
FROM python:3.6
# set the working directory
RUN ["mkdir", "app"]
WORKDIR "app"
# install environment dependencies
COPY "requirements.txt" .
# install code dependencies
RUN ["pip", "install", "-r", "requirements.txt"]
# provision
ARG aws_access_key_id
ARG aws_secret_access_key
RUN ["sh", "-c", "\"aws configure set aws_access_key_id $aws_access_key_id\""]
RUN ["sh", "-c", "\"aws configure set aws_secret_access_key $aws_secret_access_key\""]
Сообщение об ошибке, которое я получаю:
sh: 1: aws configure set aws_access_key_id ******************MQ: not found
The command 'sh -c "aws configure set aws_access_key_id $aws_access_key_id"' returned a non-zero code: 127
По сути sh
говорит, что это не 't знает о любой команде aws
во время сборки.Тем не менее, я четко указываю, что awscli
является зависимостью в requirements.txt
, которая устанавливается ранее (предоставлена здесь для полноты; это однострочный файл):
awscli
Эти *На моей локальной машине работают команды 1025 *.Они также работают, когда я закомментирую эти две последние sh
команды из образа, создаю образ, включаю его через docker exec -it <pid> /bin/bash
и выполняю их там.
Поэтому мой вопрос: почему эти командытерпят неудачу во время сборки?