簡體   English   中英

沒有Web服務器的Python腳本運行到Docker?

[英]Run Python script without web server into Docker?

我以前一直在使用Docker使用服務來運行用Django制作的網站。

現在我想知道如何創建一個Docker來運行沒有Web服務器的Python腳本以及任何與websited相關的服務。

我以前工作的普通碼頭工人的一個例子是:

version: '2'
services:
  nginx:
    image: nginx:latest
    container_name: nz01
    ports:
      - "8001:8000"
    volumes:
      - ./src:/src
      - ./config/nginx:/etc/nginx/conf.d
    depends_on:
      - web
  web:
    build: .
    container_name: dz01
    depends_on:
      - db
    volumes:
      - ./src:/src
    expose:
      - "8000"
  db:
    image: postgres:latest
    container_name: pz01
    ports:
        - "5433:5432"
    volumes:
      - postgres_database:/var/lib/postgresql/data:Z
volumes:
    postgres_database:
        external: true

docker-compose.yml文件應該如何?

只需從Dockerfile中刪除與腳本無關的所有內容,並從簡單的內容開始,例如

FROM python:3

ADD my_script.py /

CMD [ "python", "./my_script.py" ]

您不需要Docker compose來容納單個python腳本。

這個例子來自這個關於容器化Python應用程序的簡單教程: https//runnable.com/docker/python/dockerize-your-python-application

從映像啟動容器時,可以輕松覆蓋Dockerfile中指定的命令(通過CMD )。 只需將所需命令附加到docker run命令,例如:

docker run IMAGE /path/to/script.py

您可以輕松地以交互方式運行Python,甚至無需構建容器:

docker run -it python

如果您想要訪問容器中編寫的某些代碼,只需將其更改為:

docker run -it -v /path/to/code:/app: python

這個簡單的應用程序不需要制作Dockerfile。

大多數Linux發行版都預裝了Python。 在這里使用Docker會增加顯着的復雜性,我非常強烈建議不要使用Docker來運行一個簡單的腳本。 您可以使用虛擬環境將特定Python包的依賴關系與系統的其余部分隔離開來。

(對於主要希望與主機系統交互的腳本,獲得文件系統權限和用戶ID的問題非常一致。還要記住,運行docker任何東西都意味着root等價權限。如果你不想要Docker的文件系統和用戶名稱空間隔離,恕我直言,更容易不使用Docker,這是沒有意義的。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM