带Android环境的Jenkines容器(Docker)

上次在使用jenkines打包环境的时候,发现要想打包Android,需要添加环境,但是这样的话每次配置很麻烦。而且没有相关的Docker,迁移部署很麻烦。所以就编译了一个Dockerfile.

编译tomcat的Docker.

  • 接之前的文章,首先有了jdk的容器,然后基于jdk的容器添加了tomcat
  • 之前文章 基于ubutu的Java环境的Dockerfile
#基础镜像
FROM zhu260824/ubuntu-base:jdk8
#作者
MAINTAINER ZHULIN <[email protected]>

ADD run.sh /run.sh
RUN chmod +x /*.sh
#这儿tomcat使用了自己改动过的版本,主要修改了tomcat的管理页面的用户名和密码,这样启动后就可以直接通过管理页面部署war包了(manger默认密码admin,admin)
RUN wget https://zhulin-nas.oss-cn-shanghai.aliyuncs.com/apache-tomcat-8.5.37.tar.gz
RUN tar -zxvf apache-tomcat-8.5.37.tar.gz
RUN mv apache-tomcat-8.5.37 /usr/lib
RUN rm -rf apache-tomcat-8.5.37.tar.gz

EXPOSE 22
EXPOSE 8080

CMD ["/run.sh"]

添加/run.sh,将tomcat添加为开机启动

#!/bin/bash

nohup sh /usr/lib/apache-tomcat-8.5.37/bin/catalina.sh run > tomcat.log 2>&1 & 

exec /usr/sbin/sshd -D

然后编译dockerfile

我编译的版本

docker push zhu260824/ubuntu-base:tomcat8

运行

docker run -d --name ubuntutomcat -p 7100:22  -p 8080:8080 -v /your/maven:/mnt/maven -v /your/gradle:/mnt/gradle -v /your/jdk1.8.0_202:/mnt/jdk1.8.0_202 zhu260824/ubuntu-base:tomcat8
  • 这样你的tomcat的环境就可以了,启动容器后使用http://ip:8080这样就可以访问tomcat了,并且可以通过manger部署war包
  • 群晖中,可以直接配置端口和文件映射使用,不需要使用命令

为tomcat添加android环境和jenkins设置.

基于上面的tomcat编译新的Dockerfile

#基础镜像
FROM zhu260824/ubuntu-base:tomcat8
#作者
MAINTAINER ZHULIN <[email protected]>

ENV ANDROID_HOME=/mnt/android/android-sdk-linux
ENV PATH=$ANDROID_HOME/tools:$PATH
#jenkins基础文件夹
VOLUME ["/root/.jenkins"]
#Android的SDK文件夹
VOLUME ["/mnt/android/android-sdk-linux"]

RUN rm -rf /etc/profile
ADD profile /etc/profile

EXPOSE 22
EXPOSE 8080

CMD ["/run.sh"]

由于run.sh没有做修改,所以无需添加run.sh,但是修改了profile文件,所以需要添加profile

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi
export JAVA_HOME=/mnt/jdk1.8.0_202
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export M2_HOME=/mnt/maven
export GRADLE_HOME=/mnt/gradle
export ANDROID_HOME=/mnt/android/android-sdk-linux  
export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$GRADLE_HOME/bin:$ANDROID_HOME/tools:$PATH

然后编译dockerfile

我编译的版本

docker push zhu260824/ubuntu-base:android

运行

docker run -d --name ubuntuandroid -p 7100:22  -p 8080:8080 -v /your/maven:/mnt/maven -v /your/gradle:/mnt/gradle -v /your/jdk1.8.0_202:/mnt/jdk1.8.0_202 -v /your/android:/mnt/android/android-sdk-linux -v /your/jenkins:/root/.jenkins zhu260824/ubuntu-base:android
  • /root/.jenkins文件夹为jenkins的工作文件夹,所有Jenkins相关文件都存在这里,映射本地文件夹后,更换容器等操作,数据配置都不会丢失
  • /mnt/android/android-sdk-linux为Android的sdk文件夹,android的SDK比较大,映射外部之后一次更新,多个容器,多个地方使用。
  • 配置好后,去jenkins官网下载war包,使用tomcat的管理页面部署即可
  • 更新jenkins,只需要在tomcat的管理页面卸载后,重新上传即可
  • 这样就轻松的部署使用jenkins了,不需要每次都各种配置,只需启动容器,配置一下容器都端口和文件夹即可
  • 群晖中,可以直接配置端口和文件映射使用,不需要使用命令

你可能感兴趣的:(docker,Docker,Jenkins)