[Docker]制作一个可以运行spring-cloud的镜像

A Dockerfile for Maven-based Github projects

翻译:A Dockerfile for Maven-based Github projects

  • 环境配置阶段1:整个后端由一个公共模块和若干个子模块组成。众所周知java项目有许多的依赖包,这些可以通过maven进行管理,因此在编译之前,首先要在纯净的容器中借助maven下载公共模块的依赖包。

    # 未优化版本
    FROM maven:3-openjdk-8 as basement
    ARG MY_HOME=/app
    COPY . $MY_HOME
    WORKDIR $MY_HOME
    RUN mvn clean install
    

    Maven Docker镜像使用技巧

    • 优化1:使用带国内镜像源加速功能的基础镜像
    FROM registry.cn-hangzhou.aliyuncs.com/acs/maven as basement
    
    • 优化2:利用镜像分层构建的特点,单独将pom.xml作为一层,起到缓存依赖的作用
    COPY pom.xml $MY_HOME
    RUN ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify","clean","--fail-never"]
    
    COPY . $MY_HOME
    
    RUN ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify"]
    
    • 最终效果:通过该DockerFile可以构建一个公共模块的镜像
    FROM registry.cn-hangzhou.aliyuncs.com/acs/maven as basement
    ARG MY_HOME=/app
    WORKDIR $MY_HOME
    COPY pom.xml $MY_HOME
    RUN ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify","clean","--fail-never"]
    
    COPY . $MY_HOME
    
    RUN ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify"]
    
  • 环境配置阶段2:现在子模块可以借助公共模块的镜像继续编译子模块的代码

    • ARG需要由外部传入

    • -P代表使用对应的生产环境配置文件(需要自己准备)

      ARG IMAG_BASE_PROD
      FROM ${IMAGE_BASE_PROD} as builder
      ARG MODULE_NAME
      COPY . /usr/src/app/bx-core-server/${MODULE_NAME}
      WORKDIR /usr/src/app
      RUN cd /usr/src/app/bx-core-server/${MODULE_NAME} \
        && mvn clean install -P docker
      
  • 打包阶段:

    • 使用openjdk运行项目

      FROM openjdk:8u265-jre-slim as prod
      ARG MODULE_NAME
      ENV MODULE_NAME ${MODULE_NAME}
      COPY --from=builder /usr/src/app/bx-core-server/${MODULE_NAME}/target/${MODULE_NAME}.jar /root/
      RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone
      CMD java  -jar -Xmx512m /root/${MODULE_NAME}.jar
      
  • 其他可以参考的网址:

MINE MIND系列将在我的GitHub上实时更新,同时精选部分汇总于CSDN专栏
GitHub仓库:https://github.com/IcyLeaves/MINE-MIND
CSDN专栏:https://blog.csdn.net/qq_37398834/category_10975647.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值