使用docker入口点和外部文件

2024-04-20 09:36:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个python脚本来创建AWS CloudFormation更改集以简化执行,我想将这个脚本添加到Docker映像并作为入口点运行。你知道吗

为了实现这一点,我必须阅读CFs模板文件和参数文件,它们都是json格式的。 当我在本地shell环境中执行脚本时,一切都按预期工作。你知道吗

当我运行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" ]

Tags: 文件dockerpy脚本awsjsonappcreate
1条回答
网友
1楼 · 发布于 2024-04-20 09:36:13

出现错误的原因是,当文件存在于文件系统中时,容器中不存在该文件。至少有两种可能的解决办法。你知道吗

您可以在构建阶段将文件ADD放入容器(构建您自己的Dockerfile)或将本地目录映射到容器内的目录:

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

这样,当您运行容器时,它将拥有与本地templates文件夹中的内容位于/templates/template.json的相同文件。阅读有关bind mounts的更多信息。你知道吗

相关问题 更多 >