Github Action 一键部署Flask 应用
flask github action快速构建
·
本文介绍如何使用github action 快速制作flask应用cicd流程。git地址在cicd-flask-example
flask是实现python WSGI标准的web框架,但是仅仅适用于开发环境。要部署到生产环境,需要选择一种WSGI服务器(本文选择的是gunicorn)。
什么是WSGI Server?
WSGI 是python语言定制的web规范(仅限python),兼容WSGI(Web Server Gateway Interface)的服务器就叫"WSGI Server".
其功能包括:
- 运行python应用
- 协议转换:将HTTP请求转换为标准WSGi请求,将WSGI响应转换为HTTP响应
应用
参考:flask quickstart 运行一个简单的Hello World 服务器。
容器化
Hello world程序
- Dockerfile
# 选择python版本
FROM python:3.7.14-buster
# 设置工作目录
WORKDIR /app
# 安装python依赖
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
# 拷贝当前文件夹所有文件到容器工作目录
COPY . .
# 启动应用
CMD [ "gunicorn" , "app:app", "-c", "gunicorn.conf.py"]
打成docker应用,我们希望以:
docker run -d -p 8080:8080 oneslide/devops:flask
方式启动。
github action
github action 是github免费的流水线工具。流水线配置文件时yaml格式的,放置在项目根目录的.github/workflows下。
这个仓库的流水线配置文件时.github/workflows/docker-image.yml流水线流程大概分成三步:
- 打镜像
- 登录DockerHub
- 推送镜像到DockerHub。
- docker-image.yml
name: Docker Image CI
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
IMAGE_NAME: oneslide/devops:flask
jobs:
build:
runs-on: ubuntu-latest
steps:
# 1. 打镜像
- uses: actions/checkout@v3
- name: Build the Docker image
run: docker build . --file Dockerfile --tag ${{env.IMAGE_NAME}}
# 2. 登录DockerHub
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# 3. 推送镜像到DockerHub
- name: Publish Image to Docker Hub
run: docker push ${{env.IMAGE_NAME}}
添加Docker Hub凭证
注意到流水线配置文件docker-image.yml有 ${{ secrets.DOCKERHUB_USERNAME }} 的变量 。
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }} # 用户名
password: ${{ secrets.DOCKERHUB_TOKEN }} # 密码
${{ secrets.DOCKERHUB_USERNAME }} 变量需要在仓库Settings -> Secret - >Action -> New Repository Secert配置。
输入你的Docker Hub的凭证。
更多推荐



所有评论(0)