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