前置
-
准备参考 本文 部署flask项目的同学,记得先去拜读一下《cenos7 下 docker -----> Jenkins 私钥配置 git (避坑指南)》 把 github 配通了,再看哦
-
还要拜读一下 《# cenos7 下 docker -----> Jenkins 容器内使用docker 命令(避坑指南)》 需要使用 docker 命令完成 项目部署
- 使用到的jenkins 插件有:Git Paramete,Generic Webhook Trigger,
- 本系列是基于持续集成,自动部署 编写的,各位同学取实际项目所需即可
- 交互思路:
正文
怎样构建,怎样拉取github 代码不用说了吧,这里就直接上干货了!!!
第一步:在flask项目 根目录 下 新建一份 Dockerfile 文件(名字不可改,没有后缀)
FROM python:3.11.5
# 设置工作目录
WORKDIR /var/jenkins_home/workspace/xxxx (这里是Jenkins 的默认项目存放目录,xxxx首页新建任务所填写的名称,建议与github项目名称保持一致)
# 复制应用程序代码到容器中
COPY . /var/jenkins_home/workspace/xxxx
RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ || echo "Error installing requirements"
# 暴露应用程序监听的端口
EXPOSE 9091
# 容器启动时的命令
CMD ["python3", "app.py"]
第二步:在Jenkins 里面新建任务(建议任务名称与 GitHub 的项目名称保持一致)
GitHub 配置 此处忽略 可拜读一下《cenos7 下 docker -----> Jenkins 私钥配置 git (避坑指南)》
- 在任务管理 ——> 源码管理 中找到 构建触发器 勾选 Generic Webhook Trigger 根据提示 配置 GitHub webhooks 用的 地址:**http://Jenkins访问的地址:端口/generic-webhook-trigger**/invoke?token=xxxx (xxxx 为自定义的token)
- 进入 对应的 GitHub 项目 ——> 设置 ——> Webhooks (此处看不懂的,可以 去看:这位大佬写的教程 # 【超详细傻瓜式教程】向GitHub提交代码时触发Jenkins自动构建)
- 关键的一步来了:Build Steps 选择:执行 shell(参考如下)
#!/bin/bash
# 进入到应用程序目录
cd /var/jenkins_home/workspace/xxxx(这里是Jenkins 的默认项目存放目录,xxxx首页新建任务所填写的名称,建议与github项目名称保持一致)
# 检查容器是否存在
if docker inspect flask-container >/dev/null 2>&1; then
# 停止并删除旧容器
docker stop flask-container
docker rm flask-container
# 删除旧镜像
docker rmi flask-images
fi
# 构建镜像
docker build -t flask-images .
# 运行新容器
docker run -d -p 9091:9091 --name flask-container flask-images
sleep 10
curl 服务器外网IP地址:9091(可以不要的,主要是验证一下是否部署成功)
- 保存成功后,点击 立即构建(可通过点击构建历史中的记录,进入 控制台查看具体构建进度)
至此 jerkin 部署flask 项目就折腾好了
课外知识
停止:sudo systemctl stop docker
查看:sudo systemctl status docker
启动:sudo systemctl start docker
sudo systemctl enable docker
查看已构建镜像
docker images
删除 镜像
docker rmi <镜像ID>
查看正在运行的容器
docker ps
查看所有容器
docker container ls -a
停止/删除容器
docker stop <容器ID>
docker rm <容器ID>
启动镜像
docker start <容器ID>
重启镜像
docker restart <容器ID>
进入容器
docker exec -it -uroot <容器ID> bash
退出容器
exit