【Docker】python flask 项目如何打包成 Docker images镜像 上传至阿里云ACR私有(共有)镜像仓库 集成Drone CI

一、Python环境编译

1、处理好venv环境

要生成正常的 requirements.txt 文件,我们就需要先将虚拟环境处理好

创建虚拟环境(可选):

在项目目录中,你可以选择使用虚拟环境,这样你的项目依赖将被隔离在一个独立的环境中。可以使用以下命令创建虚拟环境:

bash 复制代码
python -m venv venv

1.1、然后激活虚拟环境:

在 Windows 上:

bash 复制代码
venv\Scripts\activate

在 macOS/Linux 上:

bash 复制代码
source venv/bin/activate

2、生成 requirements.txt

前提我们需要将项目中的所有的依赖安装到激活的venv中

如果你想要生成 requirements.txt 文件,可以使用以下命令:

bash 复制代码
pip freeze > requirements.txt

这将生成 requirements.txt 文件中列出的所有依赖项。

3、尝试安装 requirements.txt:

确保你的项目中已经安装了所有依赖,你可以使用以下命令:

bash 复制代码
pip install -r requirements.txt

二、.gitignore

在我们提交代码时,需要忽略我们的虚拟环境!!!

bash 复制代码
venv/

三、Dockerfile 配置

这里面我使用了自己打的基础镜像:registry.cn-beijing.aliyuncs.com/ctra_test/python:3.9

使用pip中文镜像源:https://mirrors.aliyun.com/pypi/simple/

为了提高下载的速度

完整 Dockerfile 如下:

bash 复制代码
# 使用自己的python 镜像作为基础镜像
FROM registry.cn-beijing.aliyuncs.com/ctra_test/python:3.9

# 设置工作目录
WORKDIR /app

# 复制项目文件到工作目录
COPY . /app

# 设置APT的环境变量
ENV DEBIAN_FRONTEND=noninteractive

# 更换 pip 源为阿里云镜像 1
RUN pip install --no-cache-dir --upgrade pip \
    && pip install --no-cache-dir -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt

# 暴露应用程序的端口
EXPOSE 5000

# 设置环境变量
ENV FLASK_APP=app.py

# 运行应用程序
CMD ["flask", "run", "--host=0.0.0.0"]

四、.drone.yml 使用Drone CI工具

完整 drone.yml 如下:

yaml 复制代码
kind: pipeline
type: docker
name: flask
steps:
  - name: build_image
    image: plugins/docker:20
    depends_on: [clone]
    # volumes:
    #   - name: docker-sock
    #     path: /var/run/docker.sock
    settings:
      dockerfile: Dockerfile
      registry: registry.cn-beijing.aliyuncs.com
      repo:  registry.cn-beijing.aliyuncs.com/ctra_test/ctra-python-itra-scrapy
      auto_tag: true
      insecure: true
      username:
        from_secret: docker_username
      password:
        from_secret: docker_password


trigger:
  #  branch:
  #    - main
  ref:
    - refs/tags/*
    - refs/heads/master
# 添加pip缓存
caches:
  - pip

五、Drone & aliyun ACR

Drone CI成功编译

aliyun ACR 镜像成功写入

六、如何部署在docker环境中

1、登录阿里云Docker Registry

bash 复制代码
docker login --username=hol****@aliyun.com registry.cn-beijing.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在访问凭证页面修改凭证密码。

登录到你的私有镜像仓库地址

2、下载镜像

bash 复制代码
docker pull registry.cn-beijing.aliyuncs.com/ctra_test/ctra-python-itra-scrapy

可适当的清除之前的没用的镜像

新下载的镜像版本为latest,旧的镜像则为 <None>

3、部署镜像

bash 复制代码
docker run -d --restart always -p 5000:5000 --name itra-scrapy -v /home/logs/python:/app/logs 75d059c4d82b
相关推荐
郭庆汝2 小时前
pytorch、torchvision与python版本对应关系
人工智能·pytorch·python
思则变5 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
漫谈网络5 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
try2find7 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取8 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector9 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习9 小时前
Python入门Day2
开发语言·python
Vertira9 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉9 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗10 小时前
黑马python(二十四)
开发语言·python