java 项目 docker 部署 运行内存限制设置_后端

 愿景:"让编程不再难学,让技术与生活更加有趣"


更多架构课程请访问 xdclass.net

目录

第1集 新版AlibabaCloud微服务本地镜像打包配置讲解

第2集 镜像打包脚本Dockerfile介绍和【新版JDK11】整合

第3集 AlibabaCloud-视频服务-订单服务Docker镜像打包

第4集 本地镜像推送阿里云私有镜像仓库

干货文档


第1集 新版AlibabaCloud微服务本地镜像打包配置讲解

简介:微服务Docker镜像打包讲解

  • 官方文档:https://spring.io/guides/gs/spring-boot-docker/
  • 父项目怎么springboot版本依赖
<properties>
        <java.version>11</java.version>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <spring.boot.version>2.3.3.RELEASE</spring.boot.version>
  </properties>
  • 每个子模块项目添加依赖
//配置文件增加
<docker.image.prefix>xdclass</docker.image.prefix>


<build>
        <finalName>alibaba-cloud-gateway</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>

                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
            </plugin>

            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.10</version>
                <configuration>
                    <repository>${docker.image.prefix}/${project.artifactId}</repository>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • Spotify 的 docker-maven-plugin 插件是用maven插件方式构建docker镜像的。
${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}

第2集 镜像打包脚本Dockerfile介绍和【新版JDK11】整合

简介:微服务Docker镜像打包整合JDK11

  • 创建Dockerfile,默认是根目录,(可以修改为src/main/docker/Dockerfile,如果修则需要制定路径)
  • 什么是Dockerfile
  • 由一系列命令和参数构成的脚本,这些命令应用于基础镜像, 最终创建一个新的镜像
FROM  adoptopenjdk/openjdk11:ubi
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]


FROM <image>:<tag> 需要一个基础镜像,可以是公共的或者是私有的,
后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令
      
VOLUME  配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。
/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录 

ARG  设置编译镜像时加入的参数, JAR_FILE 是设置容器的环境变量(maven里面配置的)
COPY : 只支持将本地文件复制到容器 ,还有个ADD更强大但复杂点
ENTRYPOINT 容器启动时执行的命令

EXPOSE 8080 暴露镜像端口
  • 构建镜像( 去到子模块pom文件下)
mvn install -Dmaven.test.skip=true dockerfile:build
  • 打包网关镜像
     
     

 

 

 

 

 

 

 

 

第3集 AlibabaCloud-视频服务-订单服务Docker镜像打包

简介:微服务Docker镜像打包视频服务和订单服务

  • 视频服务打包
  • 订单服务打包

 

 

 

 

第4集 本地镜像推送阿里云私有镜像仓库

简介:本地多个镜像推送阿里云私有镜像仓库

  • 阿里云私有镜像仓库创建
  • 网关服务
//登录
docker login --username=釉釉cxy registry.cn-shenzhen.aliyuncs.com
//打标签
docker tag 494d49ea5e78 registry.cn-shenzhen.aliyuncs.com/xdclass-cloud/cloud-gateway:v1.0
//推送
docker push registry.cn-shenzhen.aliyuncs.com/xdclass-cloud/cloud-gateway:v1.0
  • 订单服务
docker tag 06270304d1ec registry.cn-shenzhen.aliyuncs.com/xdclass-cloud/cloud-order:v1.0

docker push registry.cn-shenzhen.aliyuncs.com/xdclass-cloud/cloud-order:v1.0
  • 视频服务推送
docker tag 8765039e03cd registry.cn-shenzhen.aliyuncs.com/xdclass-cloud/cloud-video:v1.0

docker push registry.cn-shenzhen.aliyuncs.com/xdclass-cloud/cloud-video:v1.0