繁体   English   中英

在 nginx docker 容器内运行 python 脚本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM