Docker+JDK+Git+Maven集成一键部署应用环境

  • Docker+JDK+Git+Maven集成一键部署应用环境已关闭评论
  • 3,770次阅读
  • A+
所属分类:Docker Java Maven

Docker+JDK+Git+Maven集成一键部署应用环境

做应用开发的同学应该都使用过Jenkins自动化部署工具,它的原理其实就是 Git拉取代码+Maven环境构建+sh启动脚本,当然笔者是简单列举一下其大概原理,我们还可以配置比较复杂的功能。

这篇文章分享如何使用Dockerfile构建自动化部署环境的Docker镜像

准备工作

  • Docker 本地或服务器需要安装好Docker
  • Maven离线包
  • Maven有关的setting文件
  • JDK1.8离线包

Docker+JDK+Git+Maven集成一键部署应用环境

整体思路

集成一键部署应用环境的整体思路其实和Jenkins的方式大致一样,不过此次分享的应用程序代码是保存在本地,其实如果业务代码是保存在公网的git上,在Dockerfile中完全可以指定git pull的地址,实现与Jenkins相同的功能(笔者的业务代码是放在内网上,所以选择本地打包)。

Dockerfile

FROM centos:latest

#基础依赖
RUN yum -y install zip unzip
RUN yum -y install vim

# 应用环境变量
ENV APP_NAME=docker-maven-test
ENV APP_HOME=/home/admin/docker-maven-test
ENV JAR_FILE=docker-maven-test-1.0.0

# 将构建出的主包复制到指定镜像目录中
RUN  groupadd admin && \
useradd admin -g admin && \
mkdir -p /home/admin/$APP_NAME/logs /home/admin/$APP_NAME/bin /home/admin/$APP_NAME/target /home/admin/$APP_NAME/target/lib

#jdk1.8环境
RUN mkdir /usr/local/java
ADD soft/jdk-8u202-linux-x64.tar.gz /usr/local/java/
RUN ln -s /usr/local/java/jdk1.8.0_202 /usr/local/java/jdk
ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH

#准备自动构建打包环境
COPY soft/apache-maven-3.3.9-bin.tar.gz /home/admin/$APP_NAME/bin/
RUN tar xzvf /home/admin/$APP_NAME/bin/apache-maven-3.3.9-bin.tar.gz
RUN rm -f /home/admin/$APP_NAME/bin/apache-maven-3.3.9-bin.tar.gz
COPY soft/settings.xml /root/.m2/
RUN cp -R apache-maven-3.3.9 /usr/local/bin
RUN export PATH=apache-maven-3.3.9/bin:$PATH
RUN export PATH=/usr/local/bin/apache-maven-3.3.9/bin:$PATH
RUN ln -s /usr/local/bin/apache-maven-3.3.9/bin/mvn /usr/local/bin/mvn

#应用工作空间
WORKDIR /build/
COPY pom.xml /build/

#如果应用代码在公网,可以使用git clone 将项目克隆下来,再次copy
COPY docker-maven-test /build/docker-maven-test/
RUN mvn -q clean package -Dmaven.test.skip=true

#拷贝应用包
RUN cp /build/docker-maven-test/target/$JAR_FILE.jar /home/admin/$APP_NAME/target/$APP_NAME.jar

#设置系统编码
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV TZ=Asia/Shanghai
ENV LC_ALL zh_CN.UTF-8

# 复制脚本文件
COPY docker-maven-test/start.sh /home/admin/$APP_NAME/bin/

# 切换工作空间
WORKDIR /home/admin/$APP_NAME/
RUN chmod -R a+x /home/admin/$APP_NAME/bin/*.sh && \
chown -R admin:admin /home/admin/*

# 运行jar包
ENTRYPOINT ["java","-jar","docker-maven-test-1.0.0.jar"]

运行

将上述编写好的Dockerfile尽量放在应用代码的根目录(如果需要拷贝本地工程),因为这样Docker才可以在上下文中找到对应的程序代码,进行后续操作。运行如下命令即可一键打包

//命令中的"."表示当前目录下的Dockerfile
docker build -t docker-maven-test .
  • 我的微信
  • 加好友一起交流!
  • weinxin
  • 微信公众号
  • 关注公众号获取分享资源!
  • weinxin