无需环境,直接用 Docker 来启动你的 Python 项目_docker运行python程序
大家好 我是洪峰
想象这样一种场景,你写好了代码,准备部署在新的服务器上,这台服务器只有 Python2 和 Python3.6,没有你代码适配好的 Python3.12,那怎么办?
1、编译安装 Python,我不推荐这种方法,安装过程中,各种缺失的依赖绝对让你抓狂,如果你就是要用这种方法,可以参考这篇避坑-编译安装 Python 时遇到无法构建 SSL。
2、docker 或 docker compose,我强烈推荐这种方法,而且不构建自定义镜像就可以运行,相当于你有一个随时使用的 Python 环境。
接下来就来分享方法 2,你既可以直接使用 Docker 命令,也可以使用 Docker Compse。
使用 Docker 命令
1、打开终端或命令行界面。
2、cd 到 Python 项目目录。
3、运行以下命令,将你的项目目录挂载到容器中,并使用 Docker 运行你的 Python 应用:
docker run -it --rm -v \"$(pwd)\":/usr/src/myapp -w /usr/src/myapp python:3.12-alpine python your_script.py
-
-it
选项使容器的标准输入保持打开,并分配一个伪终端。 -
--rm
选项告诉 Docker 在容器退出时自动删除它,避免留下无用的容器。 -
-v \"$(pwd)\":/usr/src/myapp
将当前目录(即你的 Python 项目目录)挂载到容器的/usr/src/myapp
目录。 -
-w /usr/src/myapp
设置工作目录为/usr/src/myapp
。 -
python:3.12-alpine
是使用的 Docker 镜像,这里使用的是 Python python:3.12-alpine。你可以根据需要更换为其他版本,参考前文为 Python 项目选择合适的 Docker 镜像。 -
python your_script.py
是容器启动后执行的命令,用于运行你的 Python 脚本。
如果你记不住 docker 中冒号(:)那边是宿主机,那边是容器,可以看前文:Docker 宿主机和容器的映射关系记忆技巧
使用 Docker Compose
1、在你的 Python 项目目录中创建一个 docker-compose.yml
文件。
2、添加以下内容到 docker-compose.yml
文件中,根据你的需要调整:
version: \'3.8\'services: python-app: image: python:3.8 volumes: - .:/usr/src/myapp working_dir: /usr/src/myapp command: python your_script.py
-
这里定义了一个名为
python-app
的服务,使用python:3.8
镜像。 -
volumes
配置将当前目录挂载到容器中的/usr/src/myapp
目录,使容器可以访问你的项目文件。 -
working_dir
配置设置容器的工作目录为/usr/src/myapp
。 -
command: python your_script.py
指定启动服务时要运行的命令。
1、在终端或命令行界面中,导航到包含 docker-compose.yml
文件的目录。
2、运行以下命令启动服务:
docker-compose up -d
这会根据 docker-compose.yml
文件中的配置启动一个容器,并运行指定的 Python 脚本。-d
表示后台运行。
你可能会使用宿主机代理,指定容器的时区,对外暴露端口等,不希望每次都 pip install,那么可以这样编写 docker-compose.yml :
version: \'3.8\'services: auto_reserve: image: python:3.12-alpine container_name: auto_reserve restart: always environment: - TZ=Asia/Shanghai - http_proxy=http://172.17.0.1:7890 - https_proxy=http://172.17.0.1:7890 - all_proxy=http://172.17.0.1:7890 volumes: - .:/app - ./site-packages:/usr/local/lib/python3.12/site-packages working_dir: /app command: /app/init.sh
其中 init.sh 内容如下:
#!/bin/shpip install --no-cache-dir -r requirements.txtpytestpython startup.py
使用 Docker Compose 运行项目的好处是,你可以轻松地配置和启动多个相关服务,使用 Compose,你可以通过 YAML 文件来配置应用服务,然后使用一条命令,就能创建并启动所有的服务。以下是一些 Docker Compose 的常用命令:
docker-compose up
up
命令会更新配置并重新启动服务。docker-compose down
docker-compose up
命令所启动的容器、网络、卷和默认网络。docker-compose start
docker-compose stop
docker-compose start
来再次启动容器。docker-compose restart
docker-compose build
docker-compose pull
docker-compose push
docker-compose logs
docker-compose exec
docker-compose exec web bash
会在名为 web 的服务的容器中启动 bash 会话。docker-compose run
docker-compose run web python manage.py migrate
可以用于运行 Django 迁移。docker-compose config
docker-compose ps
docker-compose rm
docker-compose down
来达到相同的效果,但 down
命令还会删除网络和卷。这些命令为 Docker Compose 的常用工具集,覆盖了从构建镜像、容器的启动和停止、到查看日志和执行服务内部命令等常见操作。通过熟悉这些命令,可以有效地管理和维护多容器的 Docker 环境。
以上是两种不构建自定义镜像而直接使用 Docker 或 Docker Compose 运行 Python 项目的方法。简单来说,这些方法通过使用官方 Python 镜像并将你的项目目录挂载到容器内部,允许你在容器环境中执行 Python 脚本。非常方便。
如果有帮助,欢迎点赞关注、转发、支持。