此前用 Python 写了一些任务,部署的时候总碰到各种配置问题,索性用docker打包,后面直接一键部署即可。

在此记录打包历程。

Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 使用Python 3.10 基础镜像
FROM python:3.10-slim-bullseye as builder

# 安装依赖
# 将requirements.txt复制到容器中的/app目录
COPY requirements.txt .
# RUN pip install --index-url=https://www.piwheels.org/simple --no-cache-dir -r requirements.txt
RUN pip install --no-cache-dir -r requirements.txt --index-url=https://pypi.tuna.tsinghua.edu.cn/simple

# 设置工作目录
WORKDIR /app

# 删除多余文件
RUN rm -rf requirements.txt

# 拷贝代码
COPY app.py /app/app.py
COPY tasks /app/tasks

# 指定环境变量,如果需要的话

# 需要映射文件夹
VOLUME /app/data

# 时区设置
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' > /etc/timezone

# 设置容器启动时运行的命令
CMD ["python", "app.py"]

交叉编译

采用docker buildx进行交叉编译,构建命令如下。

配置多平台编译 buildx

docker自带的builder不支持交叉编译,首次交叉编译需要替换docker自带的builder

1
2
3
4
# 安装builder
docker buildx create --use --name=mybuilder-cn --driver docker-container --driver-opt image=dockerpracticesig/buildkit:master
# 使用bulder
docker buildx use mybuilder-cn

登录阿里云

1
docker login --username=*****@qq.com registry.cn-hangzhou.aliyuncs.com

阿里云

直接推送到阿里云Docker Hub下的registry.cn-hangzhou.aliyuncs.com/dorad/rrrcn_auto_collecter镜像仓库。

1
docker buildx build --platform linux/amd64,linux/arm64 -t registry.cn-hangzhou.aliyuncs.com/dorad/rrrcn_auto_collecter -o type=registry .

采用platform 参数控制需要发布的平台,这里主要支持armx86-64平台。

参考