1. 代碼準(zhǔn)備
在項(xiàng)目根目錄下新建一個(gè)docker_env目錄, 其下文件如下 https://gitee.com/wzj66/jenkins-test-code/tree/master/docker_env
在項(xiàng)目根目錄下新建四個(gè)文件, 分別為Dockerfile, Jenkinsfile, requirements.txt, uwsgi.ini
1.1 Dockerfile內(nèi)容
FROM ubuntu:18.04
# 支持中文
ENV LANG C.UTF-8
#創(chuàng)建項(xiàng)目文件夾, 設(shè)項(xiàng)目名為 project
RUN mkdir /project/
COPY . /project
RUN mkdir /root/.pip/
#時(shí)區(qū)配置
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,執(zhí)行這一個(gè), 沒(méi)有注釋
# 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內(nèi)容
設(shè)鏡像名為image_name
設(shè)容器名為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內(nèi)容
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內(nèi)容
[uwsgi]
http = 0.0.0.0:8003
chdir = /project
module = project.wsgi
master = true
processes = 4
vacuum = false
2. Jenkins流水線
2.1 創(chuàng)建流水線
進(jìn)入頁(yè)面以后點(diǎn)擊打開(kāi)Blue Ocean

點(diǎn)擊創(chuàng)建新的流水線

image.png
代碼倉(cāng)庫(kù)選擇git
輸入倉(cāng)庫(kù)url, 用戶名密碼
點(diǎn)擊創(chuàng)建證書(shū), 創(chuàng)建流水線

image.png
創(chuàng)建完流水線之后會(huì)自動(dòng)運(yùn)行流水線

image.png
2.2 編輯腳本
如果想在Jenkins頁(yè)面編輯流水線步驟(Jenkinsfile)
點(diǎn)擊右上角編輯可以編輯流水線腳本

image.png

image.png
編輯完流水線腳本也回自動(dòng)運(yùn)行一次流水線
編輯完腳本后會(huì)幫你提交一次代碼, 本地的項(xiàng)目里面記得pull一下代碼
2.3 完成
流水線運(yùn)行完成則可以訪問(wèn)自己的django項(xiàng)目

image.png