1. 代码准备
在项目根目录下新建一个docker_env
目录, 其下文件如下 https://gitee.com/wzj66/jenkins-test-code/tree/master/docker_env
在项目根目录下新建四个文件, 分别为Dockerfile
, Jenkinsfile
, requirements.txt
, uwsgi.ini
1.1 Dockerfile内容
FROM ubuntu:18.04
# 支持中文
ENV LANG C.UTF-8
#创建项目文件夹, 设项目名为 project
RUN mkdir /project/
COPY . /project
RUN mkdir /root/.pip/
#时区配置
RUN mkdir -p /usr/share/zoneinfo/Asia
RUN cp /project/docker_env/Shanghai /usr/share/zoneinfo/Asia/Shanghai
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 换源
RUN cp /project/docker_env/sources.list /etc/apt/sources.list
RUN cp /project/docker_env/pip.conf /root/.pip/pip.conf
# 软件安装
RUN apt update
RUN apt install software-properties-common -y
RUN add-apt-repository ppa:deadsnakes/ppa -y
RUN apt update
RUN apt install python3.6 -y
RUN apt-get install python3-pip -y
RUN pip3 install --upgrade pip
RUN apt-get install build-essential python3.6-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev zlib1g-dev -y
# 安装pip模块
RUN pip3 install -r /project/requirements.txt
# 如果有celery,执行这一个, 没有注释
# RUN echo "nohup python3 /project/manage.py celery worker & >/dev/null 2>&1 &" >> /root/run.sh
RUN echo "uwsgi --ini /project/uwsgi.ini" >> /root/run.sh
EXPOSE 8003
ENTRYPOINT ["bash", "/root/run.sh"]
1.2 Jenkinsfile内容
设镜像名为image_name
设容器名为container_name
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'docker build -t image_name .'
}
}
stage('Deploy') {
steps {
sh '''if [ $(docker ps -aq --filter name=container_name) ];then docker rm -f container_name;fi
docker run \\
--detach \\
--publish 8003:8003 \\
--publish 5553:5555 \\
--name container_name \\
image_name'''
}
}
}
}
1.3 requirements.txt内容
Django==2.2.2
django-cors-headers==3.1.1
django-redis==4.10.0
djangorestframework==3.10.3
mysql-connector==2.2.9
PyJWT==1.7.1
PyMySQL==0.9.3
redis==2.10.6
requests==2.22.0
SQLAlchemy==1.2.11
SQLAlchemy-Utils==0.35.0
uWSGI==2.0.20
python-dateutil==2.8.1
1.4 uwsgi.ini内容
[uwsgi]
http = 0.0.0.0:8003
chdir = /project
module = project.wsgi
master = true
processes = 4
vacuum = false
2. Jenkins流水线
2.1 创建流水线
进入页面以后点击打开Blue Ocean
点击创建新的流水线
代码仓库选择git
输入仓库url, 用户名密码
点击创建证书
, 创建流水线
创建完流水线之后会自动运行流水线
2.2 编辑脚本
如果想在Jenkins页面编辑流水线步骤(Jenkinsfile)
点击右上角编辑可以编辑流水线脚本
编辑完流水线脚本也回自动运行一次流水线
编辑完脚本后会帮你提交一次代码, 本地的项目里面记得pull一下代码
2.3 完成
流水线运行完成则可以访问自己的django项目