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