簡體   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