Использование точки входа в докер и файлов вне докера - PullRequest
1 голос
/ 10 июля 2019

Я пишу скрипт на python, который создает наборы изменений AWS CloudFormation для упрощения выполнения. Я хочу добавить этот скрипт в образ Docker и запустить его в качестве точки входа.

Для этого мне нужно прочитать файл шаблона CFs и файл параметров, оба в формате json. Когда я выполняю сценарий в локальной среде оболочки, все работает как положено.

Когда я запускаю Docker-контейнер и указываю файлы. Сценарий говорит, что не может найти файл.

Теперь мой вопрос: как я могу разрешить контейнеру получать доступ к этим файлам?

docker pull cf-create-change-set:latest
docker run cf-create-change-set:latest --template-body ./template.json --cli-input-json ./parameters.json

Traceback (most recent call last):
  File "/app/cf-create-change-set.py", line 266, in <module>
    with open(CLI_INPUT_JSON, 'r') as f:
FileNotFoundError: [Errno 2] No such file or directory: './template.json'

Вот мой докер-файл:

FROM AWS_ACCOUNT_ID.dkr.ecr.AWS_REGION.amazonaws.com/cicd/docker-base-image:iat

WORKDIR /app

# Copy app data
COPY app/requirements.txt .
COPY app/cf-create-change-set.py .

RUN pip3 install --no-cache-dir -r /app/requirements.txt

ENTRYPOINT [ "/app/cf-create-change-set.py" ]

1 Ответ

0 голосов
/ 10 июля 2019

Причина ошибки заключается в том, что файл не существует внутри контейнера, пока он существует в вашей файловой системе. Есть как минимум два возможных решения.

Вы можете либо ADD файлы в контейнер на этапе сборки (создать собственный Dockerfile), либо сопоставить локальный каталог с каталогом внутри контейнера:

docker run -v ./templates:/templates image:tag --template-body /templates/template.json

Таким образом, при запуске контейнера он будет иметь тот же файл, расположенный в /templates/template.json, что и содержимое вашей локальной папки templates. Подробнее о креплениях .

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