作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我在 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/
我是一名优秀的程序员,十分优秀!