python - 有没有办法自动激活 virtualenv 作为 docker 入口点?

标签 python docker

我在 docker 容器内有一个 flask 应用程序。我想使用 python 包 zappa 将该应用程序部署到 Amazon Web Services。

不幸的是,zappa 要求它和我所有的应用程序依赖项都安装在 python 虚拟环境中。

所以我重建了我的 docker 镜像,并将所有内容都移到了其中的虚拟环境中。

问题是现在我无法运行如下命令:

docker exec <container> flask <sub command>

因为flask安装在虚拟环境中,没有被激活。

我仍然可以这样做:

host$ docker exec -it <container> bash

container$ source venv/bin/activate
container$ flask <sub command>

另外,我不能再运行我的默认 Dockerfile CMD (gunicorn),因为那也是我的虚拟环境。

这更有意义吗?

最佳答案

您可以创建一个充当 ENTRYPOINT 的脚本,而不是仅将脚本内嵌在命令中。 .一个例子entrypoint.sh看起来像:

#!/bin/bash
source venv/bin/activate
exec "$@"

然后在你的Dockerfile您将复制此文件并将其设置为 ENTRYPOINT :

FROM myimage
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

现在您可以像 docker run mynewimage flask <sub command> 一样运行它或 docker run mynewimage gunicorn .

关于python - 有没有办法自动激活 virtualenv 作为 docker 入口点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44077407/

相关文章:

python - 使用 awk 进行模式检查

python - 堆栈并评估后缀

GMS 3.4.x 中的 Python - 使用 matplotlib.pyplot : Could not find or load the Qt platform plugin for windows 时 DM 崩溃

ruby-on-rails - Rails 服务器仍在新打开的 docker 容器中运行

linux - kubernetes:Docker请求和分配的内容之间的区别

python pandas - 生成具有多个条件的 View /复制警告过滤数据框

python - 如何在从 docker 容器运行的 jupyter notebooks 中获取黑色代码格式?

node.js - HaProxy + docker运行状况检查会重启死容器

java - 将多个微服务相互依赖地部署到docker容器中

python - 为什么使用setWindowFlags后子对话框无法显示?