Docker部署Jenkins

我怕爱的太早我们不能终老 提交于 2020-02-29 19:59:34

持续集成

创建jenkins目录及Dockerfile
$ mkdir jenkins && cd jenkins
$ touch Dockerfile
$ vim Dockerfile
# Version 0.0.1
FROM ubuntu:14.04
MAINTAINER Hadeian
RUN apt-get update && apt-get install -y curl        apt-transport-https software-properties-common
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys      F76221572C52609D
RUN echo "deb https://apt.dockerproject.org/repo ubuntu-trusty     main" > /etc/apt/sources.list.d/docker.list
RUN add-apt-repository ppa:openjdk-r/ppa
RUN apt-get update && apt-get install -y iptables        ca-certificates openjdk-8-jdk git-core docker-engine
ENV JENKINS_HOME /opt/jenkins/data
ENV JENKINS_MIRROR https://mirrors.tuna.tsinghua.edu.cn
RUN mkdir -p $JENKINS_HOME/plugins
RUN curl -sf -o /opt/jenkins/jenkins.war -L     $JENKINS_MIRROR/jenkins/war-stable/latest/jenkins.war
# RUN for plugin in chucknorris greenballs scm-api git-client     git ws-cleanup;do curl -sf -o     $JENKINS_HOME/plugins/${plugin}.hpi -L        $JENKINS_MIRROR/jenkins/plugins/$plugin/latest/${plugin}.hpi;d     one
ADD ./dockerjenkins.sh /usr/local/bin/dockerjenkins.sh
RUN chmod +x /usr/local/bin/dockerjenkins.sh
VOLUME /var/lib/docker
EXPOSE 8080
ENTRYPOINT ["/usr/local/bin/dockerjenkins.sh"]

### dockerjenkins.sh脚本
#!/bin/bash
# First, make sure that cgroups are mounted correctly.
CGROUP=/sys/fs/cgroup
[ -d $CGROUP ] ||
  mkdir -p $CGROUP
mountpoint -q $CGROUP ||
  mount -n -t tmpfs -o uid=0,gid=0,mode=0755 cgroup $CGROUP ||   {
    echo "Could not make a tmpfs mount. Did you use     -privileged?"
    exit 1
  }
# Mount the cgroup hierarchies exactly as they are in the     parent system.
for SUBSYS in $(cut -d: -f2 /proc/1/cgroup)
do
  [ -d $CGROUP/$SUBSYS ] || mkdir -p $CGROUP/$SUBSYS
  mountpoint -q $CGROUP/$SUBSYS ||
    mount -n -t cgroup -o $SUBSYS cgroup $CGROUP/$SUBSYS
done
# Now, close extraneous file descriptors.
pushd /proc/self/fd
for FD in *
do
  case "$FD" in
  # Keep stdin/stdout/stderr
  [012])
    ;;
  # Nuke everything else
  *)
    eval exec "$FD>&-"
    ;;
  esac
done
popd
dockerd &
exec java -jar /opt/jenkins/jenkins.war
编译并运行镜像
$ cd jenkins
$ docker build -t "test/jenkins:v1" .
$ docker run -d -p 8080:8080 --name jenkins --privileged test/jenkins:v1
###### 查看jenkins日志
$ docker logs -f jenkins
##### 看到 INFO: Jenkins is fully up and running 即表示运行成功
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!