上次在使用jenkines打包环境的时候,发现要想打包Android,需要添加环境,但是这样的话每次配置很麻烦。而且没有相关的Docker,迁移部署很麻烦。所以就编译了一个Dockerfile.
编译tomcat的Docker.
- 接之前的文章,首先有了jdk的容器,然后基于jdk的容器添加了tomcat
- 之前文章 基于ubutu的Java环境的Dockerfile
#基础镜像
FROM zhu260824/ubuntu-base:jdk8
#作者
MAINTAINER ZHULIN <871707394@qq.com>
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 <871707394@qq.com>
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了,不需要每次都各种配置,只需启动容器,配置一下容器都端口和文件夹即可
- 群晖中,可以直接配置端口和文件映射使用,不需要使用命令