python - 将 dockerfile 从目录配置为 'read'?

标签 python docker flask dockerfile

我正在构建一个使用 docker 的 webapp(一个简单的 Flask 站点)。我希望我的开发代码不驻留在 docker 中,而是由我在 dockerfile 中定义的开发环境(使用 python3)执行。我知道我可以在 dockerfile 中使用 COPY . . 语法将源代码复制到镜像中以供执行,但这违反了我将容器与源代码分离的目标。有没有办法让 docker 容器读取并执行我运行 docker container run 命令的目录中的代码?

现在我的容器使用复制公司将所有源代码复制到容器中。然后它使用 CMD 命令自动运行 Flask 应用程序:

CMD [ "python", "flask_app/server.py" ]

(我将所有 flask 代码存储在名为 flask_app 的目录中)。我假设这是有效的,因为所有这些都已复制到容器中(根据 dockerfile 中给出的规范),并且在我运行容器时正在执行。我希望容器能够访问并执行 flask_app/server.py,而不将此信息复制到自身中 - 这可能吗?如果是这样,怎么办?

最佳答案

而不是使用 COPY要将代码移动到容器中,您将使用“绑定(bind)安装”( https://docs.docker.com/storage/bind-mounts/ )。

当您运行容器时,您将使用如下命令来执行此操作:

docker run --mount type=bind,source=<path_outside_container>,target=<path_inside_container> <image_tag>

为了可移植性,我建议将此行放入要从存储库根运行的脚本中,并具有 <path_outside_container>"$(pwd)" ,以便它可以在其他人的计算机上运行。您需要调整<path_inside_container>和你的CMD取决于您希望代码在容器内的位置。

(显然,您还可以在命令中添加您想要的任何其他选项,例如 --it --rm-p <whatever> 。)

关于python - 将 dockerfile 从目录配置为 'read'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58681168/

相关文章:

python - 应用数据库之间关系的正确方法是什么?

docker - 如何从一个 docker 容器执行命令到另一个

apache-spark - 如何在 Docker 上运行 Spark?

javascript - 预填充 WTForms 字段的当前值以对其进行编辑

python - SQLAlchemy 模型数据未在 Jinja 循环中呈现

python - TFJS 将模型保存到带有 header 的 http

python - Python 中的重载方法(解决方法)

python - 如何将 python 中 for 循环的输出写入 csv 格式的文件?

python - 如何理解sub中复杂的lambda表达式?

node.js - Nodejs 应用程序未使用 docker compose 运行