[英]Running a python script inside an nginx docker container
我正在使用 nginx 来提供我的一些文档。 我有一个为我处理这些文档的 python 脚本。 我不想预处理文档,然后在构建 docker 容器之前添加它们,因为这些文档可能会变得非常大并且数量会增加。 我想要的是在 nginx 容器内运行我的 python(和 bash)脚本,并让 nginx 只为这些文档提供服务。 有没有办法在构建容器之前不对文档进行预处理? 我试图执行RUN python3 process_docs.py
,但我一直看到以下错误:
/bin/sh: 1: python: not found
The command '/bin/sh -c python process_docs.py' returned a non-zero code: 127
有没有办法让 python3 进入 Nginx docker 容器? 我正在考虑使用以下方法安装 python3:
apt-get update -y
apt-get install python3.6 -y
但我不确定这是否是一个好习惯。 请让我知道运行我的预处理脚本的最佳方式。
您可以使用绑定挂载将数据从主机系统注入到容器中。 这将在主机数据更改时自动更新。 如果你在 Docker Compose 中运行它,语法看起来像
version: '3.8'
services:
nginx:
image: nginx
volumes:
- ./html:/usr/share/nginx/html
- ./data:/usr/share/nginx/html/data
ports:
- '8000:80' # access via http://localhost:8000
在此示例设置中, html
目录保存您的 static 资产(签入源代码管理), data
目录保存生成的数据。 您可以在 Docker 之外从主机重新生成数据,就像不涉及 Docker 时一样
# on the host
. venv/bin/activate
./regenerate_data.py --output-directory ./data
在正常操作中您不需要docker exec
,尽管它作为调试工具非常有用。 从概念上讲,将容器视为与流程相同可能会有所帮助。 如果您问“我可以在 Nginx进程中运行此 Python 脚本吗”,不,您通常应该在其他地方运行它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.