文章目录
之前用Jenkins时用的官方的镜像,还需要进行一些配置,这里结合平常使用,分享一下Dockerfile
Jenkinsfile 使用 脚本化的,比较易上手~
这里我已配置好的环境为:
- jdk,使用openjdk8 (
jenkins/jenkins:lts
中已有,不过需要用 jenkins用户才能用的到,可以用-u root
来测试 jenkins用户的环境变量配置) - maven ,这里用的是 3.6.3,已配置成阿里云源
- node ,安装了 12.14.0
这里这样做的话,在Jenkinsfile中可以直接使用
示例
node {
checkout scm
stage('maven打包') {
sh 'mvn -U clean package assembly:assembly -Dmaven.test.skip=true'
}
}
node {
checkout scm
stage('npm install') {
sh 'npm config set registry https://registry.npm.taobao.org'
sh 'cd escheduler-ui && npm install && npm run build'
}
stage('docker push') {
sh 'sudo docker build -t titvax/demo:1.0 .'
sh 'sudo docker tag titvax/demo:1.0 192.168.1.150:8001/titvax/demo:1.0'
sh 'sudo docker push 192.168.1.150:8001/titvax/demo:1.0'
}
}
Dockerfile
FROM jenkins/jenkins:lts
USER root
RUN echo "deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib \n\
deb http://mirrors.aliyun.com/debian-security stretch/updates main \n\
deb http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib \n\
deb http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib" > /etc/apt/sources.list
RUN apt-get update && \
apt-get install -y sudo vim && \
rm -rf /var/lib/apt/lists/*
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
RUN cd /opt && \
wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz && \
tar -zxvf apache-maven-3.6.3-bin.tar.gz && \
mv apache-maven-3.6.3 maven && \
rm -rf ./apache-maven-3.6.3-bin.tar.gz
RUN echo '<?xml version="1.0" encoding="UTF-8"?> \n\
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" \n\
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \n\
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> \n\
<mirrors> \n\
<mirror> \n\
<id>alimaven</id> \n\
<name>aliyun maven</name> \n\
<url>http://maven.aliyun.com/nexus/content/groups/public/</url> \n\
<mirrorOf>central</mirrorOf> \n\
</mirror> \n\
</mirrors> \n\
\n\
</settings>' > /opt/maven/conf/settings.xml
ENV MAVEN_HOME=/opt/maven
ENV PATH $PATH:$MAVEN_HOME/bin
RUN cd /opt && \
wget https://nodejs.org/dist/v12.14.0/node-v12.14.0-linux-x64.tar.xz && \
tar xf node-v12.14.0-linux-x64.tar.xz && \
mv node-v12.14.0-linux-x64 node && \
rm -rf ./node-v12.14.0-*tar.xz
ENV NODE_HOME=/opt/node
ENV PATH $PATH:$NODE_HOME/bin
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers
USER jenkins
ENV MAVEN_HOME=/opt/maven
ENV PATH $PATH:$MAVEN_HOME/bin
ENV NODE_HOME=/opt/node
ENV PATH $PATH:$NODE_HOME/bin
构建镜像
这里 -t
后的名称可以自行修改
docker build -t titvax/jenkins:1.0 .
创建容器
需要说明,之前我一直用的 root 用户运行jenkins容器,所以没有权限问题,下面这里用的是 jenkins 用户来运行的,所以要将挂载的目录权限修改为 1000:1000
,详见 官方Dockerhub说明
titvax/jenkins:1.0 应与你创建的一致~
export JENKINS_DATA_DIR=/data/jenkins/jenkins_home && \
mkdir -p $JENKINS_DATA_DIR && \
chown -R 1000:1000 $JENKINS_DATA_DIR && \
docker run \
--name jenkins-1 \
-d \
-p 10087:8080 \
-e TZ=Asia/Shanghai \
-v ${JENKINS_DATA_DIR}:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
titvax/jenkins:1.0
这里我将 docker 映射进去,但是注意使用时要用 sudo docker