title: docker搭建jenkins导入python包
tags:
- docker
- centos
- jenkins
categories:
- docker
以下是一个详细的文档,介绍如何使用 Docker 创建 Jenkins 并集成 Python 环境,同时使用 Docker Compose 的 YAML 文件进行编排。
1. 项目概述
本项目旨在使用 Docker 构建一个包含 Jenkins 和 Python 环境的容器化服务,并通过 Docker Compose 进行统一编排和管理。
2. 环境准备
- Docker:确保已经在你的系统上安装了 Docker,你可以通过以下命令检查 Docker 版本:
docker --version
- Docker Compose:同样需要安装 Docker Compose,检查版本的命令如下:
docker-compose --version
3. 创建 Dockerfile
首先,创建一个名为 Dockerfile
的文件,该文件将用于构建包含 Jenkins 和 Python 环境的 Docker 镜像。
# 使用官方的 Jenkins 镜像作为基础
FROM jenkins/jenkins:lts
# 切换到 root 用户以执行安装操作
USER root
# 安装必要的系统依赖
RUN apt-get update && apt-get install -y \
software-properties-common \
wget \
curl \
gnupg2 \
unzip \
&& rm -rf /var/lib/apt/lists/*
# 安装 Python 3 和 pip
RUN apt-get update && apt-get install -y \
python3 \
python3-pip \
&& rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y python3-venv
# 安装 Java 环境(这里以 OpenJDK 11 为例)
#RUN apt-get update && apt-get install -y openjdk-11-jdk \
# && rm -rf /var/lib/apt/lists/*
# 设置 Java 环境变量
#ENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64
#ENV PATH $PATH:$JAVA_HOME/bin
# 安装 Maven
#RUN wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz -P /tmp \
# && tar -xzf /tmp/apache-maven-3.8.6-bin.tar.gz -C /opt \
# && ln -s /opt/apache-maven-3.8.6 /opt/maven \
# && rm /tmp/apache-maven-3.8.6-bin.tar.gz
# 设置 Maven 环境变量
#ENV MAVEN_HOME /opt/maven
#ENV PATH $PATH:$MAVEN_HOME/bin
# 切换回 jenkins 用户
#USER jenkins
# 创建虚拟环境
RUN python3 -m venv /opt/venv
# 激活虚拟环境并设置环境变量
ENV PATH="/opt/venv/bin:$PATH"
# 可选:安装 Python 依赖(如果有 requirements.txt 文件)
COPY ./requirements.txt /tmp/requirements.txt
RUN pip3 install -i https://mirrors.aliyun.com/pypi/simple/ -r /tmp/requirements.txt
# 暴露 Jenkins 默认端口
EXPOSE 8080
EXPOSE 50000
# 启动 Jenkins
CMD ["java", "-jar", "/usr/share/jenkins/jenkins.war"]
4. 创建 Docker Compose YAML 文件
创建一个名为 docker-compose.yml
的文件,用于编排 Jenkins 服务。
services:
jenkins:
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:8080"
- "50000:50000"
volumes:
- /var/mydata/jenkins_home:/var/jenkins_home
- /usr/bin/docker:/usr/bin/docker
- /var/run/docker.sock:/var/run/docker.sock
environment:
- JAVA_OPTS=-Djenkins.install.runSetupWizard=false
deploy:
resources:
limits:
cpus: '1' # 限制使用1个 CPU 核心
memory: 1024M # 硬限制,最多使用 1024MB 内存
reservations:
memory: 256M # 软限制,建议使用不超过 256MB 内存
services
定义了要运行的服务,这里只有一个 jenkins
服务。
build
:context
:指定构建镜像时的上下文路径,.
表示当前目录。dockerfile
:指定使用的Dockerfile
文件,这里假设Dockerfile
就在当前目录下。ports
:将容器的端口映射到主机的端口。8080:8080
用于访问 Jenkins 的 Web 界面,50000:50000
用于 Jenkins 与代理的通信。volumes
:将主机的卷挂载到容器中,jenkins_home:/var/jenkins_home
表示将名为jenkins_home
的卷挂载到容器的/var/jenkins_home
目录,这样可以持久化保存 Jenkins 的数据。environment
:设置环境变量,JAVA_OPTS=-Djenkins.install.runSetupWizard=false
表示在启动 Jenkins 时跳过初始设置向导。
volumes
定义了要使用的卷,这里创建了一个名为 jenkins_home
的卷,用于持久化保存 Jenkins 的数据deploy
部分:用于定义服务的部署配置,包括资源限制。
limits
子部分
:设置资源的硬限制。
cpus
:指定容器可使用的 CPU 核心数量,可以是小数,表示部分核心。-
memory
:指定容器可使用的最大内存量,可以使用B
(字节)、K
(千字节)、M
(兆字节)、G
(吉字节)等单位。 -
reservations
子部分:设置资源的软限制,这里仅设置了内存的软限制。
5. 同级目录放requirements.txt
6. 启动 Jenkins 服务
在包含 docker-compose.yml
的目录下,执行以下命令启动 Jenkins 服务:
docker-compose up -d
该命令会在后台启动 Jenkins 服务,并根据 docker-compose.yml
文件的配置创建容器。
7. 访问 Jenkins
打开浏览器,访问 http://localhost:8080
,你将看到 Jenkins 的初始设置页面。根据提示完成 Jenkins 的初始化配置。
8. 验证 Python 环境
在 Jenkins 中创建一个新的自由风格的项目,在“构建”步骤中添加一个“执行 shell”步骤,输入以下命令:
python3 --version
pip --version
保存并构建该项目,如果输出显示 Python 和 pip 的版本信息,则说明 Python 环境已经成功集成到 Jenkins 中。
9. 停止和清理服务
如果需要停止并清理 Jenkins 服务,可以在包含 docker-compose.yml
的目录下执行以下命令:
docker-compose down
该命令会停止并删除 Jenkins 容器,同时保留数据卷。
通过以上步骤,你就可以使用 Docker 创建一个包含 Jenkins 和 Python 环境的容器化服务,并通过 Docker Compose 进行统一编排和管理。
评论前必须登录!
注册