使用 Docker-Compose 搭建构建 Django 应用的 Jenkins 服务

本文演示在 Jenkins 官方镜像的基础上搭建能构建 Django 或 Django-Rest-Framework 应用的环境。

以下的配置文件仅适用于开发环境或原型验证

构建包含 Python 的镜像

因为 Jenkins 官方的 Docker 镜像中没有包含 Python 的环境, 所以需要在镜像中加入 Python 环境。

我们选择以官方的 alpine 镜像为基础,这样构造出来的镜像比较小。 使用下面的 Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
FROM jenkins/jenkins:lts-alpine

USER root

COPY get-pip.py /get-pip.py

RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.8/main/" > /etc/apk/repositories

RUN apk update

RUN apk upgrade

RUN apk add --no-cache bash

RUN apk add --no-cache python3 python3-dev

RUN python3 get-pip.py

RUN pip install django==3.1.3 -i https://pypi.tuna.tsinghua.edu.cn/simple

RUN pip install djangorestframework==3.12.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

在以上的代码中,我们使用 alpine 国内源代替了默认国外的源以提升系统更新,下载的速度。在安装 Python 的第三方包时,也指定了国内的源,同样是为了提高速度。

为了安装 pip, 我们使用了一个特别的 get-pip.py 脚本(下载的是zip文件,请自行解压)。 需要下载并和 Dockerfile 放在同一目录下。

以上准备工作完成后,在目录中应该包含 Dockerfile 和 get-pip.py 两个文件。

然后在目录中执行以下命令镜像构建:

1
docker build -t="jenkins-python:1.0" .

构建完成后,就可以在 docker images 中看到新构建的 jenkins-python:1.0 镜像了。

用 Docker-compose 启动容器

新建名为 docker-compose.yml 的文件,拷贝以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
version: '3.7'
services:
webjenkins:
container_name: MyJenkins
image: 'jenkins-python:1.0'
restart: always
environment:
- TZ=Asia/Shanghai
ports:
- '8083:8080'
- '50001:50000'
network_mode: "bridge"

保存后,执行:

1
docker-compose up -d

就可以看到名为 MyJenkins 的容器运行了。 然后到浏览器中进行 Jenkins 的设置, 可参考 使用 Docker-Compose 搭建 Jenkins 服务

设置构建脚本

在 Jenkins 新建的项目中,在构建方法中选择使用 shell 命令,然后在输入框中输入以下内容:

1
2
python3 manage.py migrate
python3 manage.py test

这样就在项目构建时执行相关的测试了。

本文标题:使用 Docker-Compose 搭建构建 Django 应用的 Jenkins 服务

文章作者:晨星

发布时间:2020年11月22日 - 14:11

最后更新:2020年11月24日 - 07:11

原始链接:https://www.mls-tech.info/docker/docker-compose-jenkins-python-django/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。