把Python容器化运行

本文详细描述了一个Python开发者将代码从本地迁移至VPS并使用Docker进行容器化部署的过程,包括设置Dockerfile、编写requirements.txt、使用DockerCompose管理和部署,以及在VPS上运行的步骤。
摘要由CSDN通过智能技术生成

把Python容器化运行

背景:

写了python,想移动到VPS上面去。这里简单记录小白操作

步骤

wsl调试

  • py脚本正常运行
import time

import schedule


def runApp():
    print("hello")

schedule.every(10).seconds.do(runApp)

while True:
    schedule.run_pending()
    time.sleep(1)
  • 导出requirements.txt
pipreqs > requirements.txt --force
  • docker init 创建Dockerfilecompose.yaml

参考了官方文档

dyq@DESKTOP-R6TRIIR:~/code/python/easypy$ ls
hello.py  requirements.txt
dyq@DESKTOP-R6TRIIR:~/code/python/easypy$ docker init

Welcome to the Docker Init CLI!

This utility will walk you through creating the following files with sensible defaults for your project:
  - .dockerignore
  - Dockerfile
  - compose.yaml
  - README.Docker.md

Let's get started!

? What application platform does your project use? Python
? What version of Python do you want to use? 3
? What port do you want your app to listen on? 8000
? What is the command you use to run your app (e.g., gunicorn 'myapp.example:app' --bind=0.0.0.0:8000)? python hello.py
CREATED: .dockerignore
CREATED: Dockerfile
CREATED: compose.yaml
CREATED: README.Docker.md

✔ Your Docker files are ready!

Take a moment to review them and tailor them to your application.

When you're ready, start your application by running: docker compose up --build

Your application will be available at http://localhost:8000

Consult README.Docker.md for more information about using the generated files.
dyq@DESKTOP-R6TRIIR:~/code/python/easypy$
dyq@DESKTOP-R6TRIIR:~/code/python/easypy$ ls
Dockerfile  README.Docker.md  compose.yaml  hello.py  requirements.txt
dyq@DESKTOP-R6TRIIR:~/code/python/easypy$

Dockerfile:负责镜像的构建

有空可以看看dockerfile 里面会使用appuser启动程序,并做一些优化pip install -r requirements.txt也会给我们添加好

compose.yaml:负责容器编排

.dockerignore: 不会被拷贝到容器里的文件

  • 运行 docker compose up --build运行 加-d后台运行
dyq@DESKTOP-R6TRIIR:~/code/python/easypy$ docker compose up --build
[+] Building 52.4s (12/12) FINISHED                                                                                                                         docker:default
 => [server internal] load build definition from Dockerfile                                                                                                           0.0s
 => => transferring dockerfile: 1.65kB                                                                                                                                0.0s
 => [server] resolve image config for docker.io/docker/dockerfile:1                                                                                                   9.3s
 => CACHED [server] docker-image://docker.io/docker/dockerfile:1@sha256:ac85f380a63b13dfcefa89046420e1781752bab202122f8f50032edf31be0021                              0.0s
 => [server internal] load metadata for docker.io/library/python:3-slim                                                                                              30.9s
 => [server internal] load .dockerignore                                                                                                                              0.0s
 => => transferring context: 667B                                                                                                                                     0.0s
 => [server base 1/5] FROM docker.io/library/python:3-slim@sha256:eb53cb99a609b86da6e239b16e1f2aed5e10cfbc538671fc4631093a00f133f2                                    6.3s
 => => resolve docker.io/library/python:3-slim@sha256:eb53cb99a609b86da6e239b16e1f2aed5e10cfbc538671fc4631093a00f133f2                                                0.0s
 => => sha256:eb53cb99a609b86da6e239b16e1f2aed5e10cfbc538671fc4631093a00f133f2 1.65kB / 1.65kB                                                                        0.0s
 => => sha256:4e7d6f2672bd4a834eac99973679c7e73fbcd475d439b7569512bf478ed39c78 1.37kB / 1.37kB                                                                        0.0s
 => => sha256:24c52ee82b5c06944b91a17133f852a1e4dd2c8654c21c63f0c81d78f3a06479 6.71kB / 6.71kB                                                                        0.0s
 => => sha256:ac473e395e82d4ac7ff77e21e9b2ea066318bce5143d194983002e3eb1309628 12.00MB / 12.00MB                                                                      4.8s
 => => sha256:7bc5f799438a7eefb6d9adc60bc9205512b71ba2f9bb999fd1ff5f31791cdce7 244B / 244B                                                                            1.9s
 => => sha256:8731b1ec3f6b5f8205bb728c5af8284aab5d9ffe1c4288d0c26ca39cc30e48ab 2.98MB / 2.98MB                                                                        3.2s
 => => extracting sha256:ac473e395e82d4ac7ff77e21e9b2ea066318bce5143d194983002e3eb1309628                                                                             0.7s
 => => extracting sha256:7bc5f799438a7eefb6d9adc60bc9205512b71ba2f9bb999fd1ff5f31791cdce7                                                                             0.0s
 => => extracting sha256:8731b1ec3f6b5f8205bb728c5af8284aab5d9ffe1c4288d0c26ca39cc30e48ab                                                                             0.4s
 => [server internal] load build context                                                                                                                              0.0s
 => => transferring context: 1.13kB                                                                                                                                   0.0s
 => [server base 2/5] WORKDIR /app                                                                                                                                    0.2s
 => [server base 3/5] RUN adduser     --disabled-password     --gecos ""     --home "/nonexistent"     --shell "/sbin/nologin"     --no-create-home     --uid "10001  0.6s
 => [server base 4/5] RUN --mount=type=cache,target=/root/.cache/pip     --mount=type=bind,source=requirements.txt,target=requirements.txt     python -m pip install  4.7s
 => [server base 5/5] COPY . .                                                                                                                                        0.0s
 => [server] exporting to image                                                                                                                                       0.1s
 => => exporting layers                                                                                                                                               0.1s
 => => writing image sha256:1bd5a39bb2934f021bc82fe7815bc36e5aca23c972adb7f219311e500dd2b699                                                                          0.0s
 => => naming to docker.io/library/easypy-server                                                                                                                      0.0s
[+] Running 2/2
 ✔ Network easypy_default     Created                                                                                                                                 0.1s
 ✔ Container easypy-server-1  Created                                                                                                                                 0.1s
Attaching to server-1

server-1  | hello
server-1  | hello
server-1  | hello

正常运行了

上传到VPS使用

本地打一个tar到vps上面,直接压直接运行用即可

其他

参考了官方文档

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值