Python 使用docker入口点和docker外部的文件

Python 使用docker入口点和docker外部的文件,python,docker,dockerfile,Python,Docker,Dockerfile,我正在编写一个python脚本,用于创建AWS CloudFormation更改集以简化执行。我想将此脚本添加到Docker映像中,并将其作为入口点运行 为了实现这一点,我必须读取CFs模板文件和参数文件,它们都是json格式的。 当我在本地shell环境中执行脚本时,一切都按预期工作 当我运行docker容器并指定文件时。脚本说找不到该文件 现在我的问题是如何使容器能够访问这些文件 docker pull cf创建更改集:最新 docker运行cf create change set:late

我正在编写一个python脚本,用于创建AWS CloudFormation更改集以简化执行。我想将此脚本添加到Docker映像中,并将其作为入口点运行

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

当我运行docker容器并指定文件时。脚本说找不到该文件

现在我的问题是如何使容器能够访问这些文件

docker pull cf创建更改集:最新
docker运行cf create change set:latest--模板正文。/template.json--cli输入json./parameters.json
回溯(最近一次呼叫最后一次):
文件“/app/cf create change set.py”,第266行,在
将open(CLI_INPUT_JSON,'r')作为f:
FileNotFoundError:[Errno 2]没有这样的文件或目录:'./template.json'
这是我的dockerfile:

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" ]

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

您可以在构建阶段将文件添加到容器中(构建您自己的Dockerfile),或者将本地目录映射到容器中的目录:

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

这样,当您运行容器时,它将在
/templates/template.json
中具有与本地
templates
文件夹内容相同的文件。阅读更多信息。

错误的原因是文件存在于文件系统中时,容器中不存在该文件。至少有两种可能的解决方案

您可以在构建阶段将文件添加到容器中(构建您自己的Dockerfile),或者将本地目录映射到容器中的目录:

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

这样,当您运行容器时,它将在
/templates/template.json
中具有与本地
templates
文件夹内容相同的文件。了解更多信息。

Hello@YuryFedorov是的,这是可能的,我知道这个功能。问题是,每次我想使用我的cmdline功能时,我都必须输入很多行。你还有其他建议吗?也许是在读STDIN之类的东西?你好@YuryFedorov是的,这是可能的,我知道这个功能。问题是,每次我想使用我的cmdline功能时,我都必须输入很多行。你还有其他建议吗?也许是在读STDIN之类的东西?