打包部署

(1)POM文件标准说明

在POM文件中,使用profile元素来定义特定的环境变量配置。profile元素允许您根据不同的环境(例如开发、测试、准生产、生产)为项目定义不同的配置。以下是对POM文件中profile环境变量的标准说明:

  1. profile元素:在POM文件中,使用profile元素来定义一个或多个环境配置。每个profile元素包含一个唯一的id,用于标识该配置。

  2. activation元素:在profile元素中,可以使用activation元素来指定激活该配置的条件。例如,您可以基于操作系统、Java版本、Maven版本等条件来激活特定的配置。

  3. properties元素:在profile元素中,可以使用properties元素来定义环境变量。这些变量可以在项目中的其他地方引用。如下bootstrap.yml中就定义不同环境下的nacos链接信息。

server:
  port: 8081

spring:
  profiles:
    active: @profile.active@
  application:
    name: macula-cloud-system
  cloud:
    nacos:
      username: ${nacos.username}
      password: ${nacos.password}
      config:
        server-addr: ${nacos.config.server-addr}
        namespace: ${nacos.config.namespace}
        # group:
        refresh-enabled: true
        file-extension: yml

# 和环境有关的配置信息,不同环境覆盖此处的配置
nacos:
  username: nacos
  password: nacos
  config:
    server-addr: 127.0.0.1:8848
    namespace: MACULA5

---
spring:
  config:
    activate:
      on-profile: dev
nacos:
  username: maculav5
  password: *****
  config:
    server-addr: 127.0.0.1:8848
    namespace: maculav5-dev


---
spring:
  config:
    activate:
      on-profile: test
nacos:
  username: maculav5
  password: ******
  config:
    server-addr: 127.0.0.1:8848
    namespace: maculav5-test


---
spring:
  config:
    activate:
      on-profile: staging
nacos:
  username: maculav5
  password: ******
  config:
    server-addr: 127.0.0.1:8848
    namespace: maculav5-staging

---
spring:
  config:
    activate:
      on-profile: prd
nacos:
  username: itp
  password: ******
  config:
    server-addr: 127.0.0.1:8848
    namespace: maculav5

(2)虚拟机打包部署

以macula-cloud-iam服务部署为例

  • 打包dev环境应用服务
mvn clean package -DskipTests -pl macula-cloud-iam -am -P dev
  • 虚拟机安装java启动环境(centos为例)

准备rpm类型文件,前往jdk8 官方下载地址

#安装, jdk-8u261-linux-x64.rpm为文件名
rpm -ivh jdk-8u261-linux-x64.rpm
  • 虚拟机中运行应用服务
java -Xms2048m -Xmx2048m -Xmn800m -XX:PermSize=256m -XX:MaxPermSize=256m macula-cloud-iam-5.0.10-RELEASE.jar

(3)容器打包部署

以macula-cloud-iam服务部署为例

  • 打包dev环境应用服务
mvn clean package -DskipTests -pl macula-cloud-iam -am -P dev
  • 编写DockerFile文件,Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。内容可参考如下:
FROM openjdk:8u212-alpine
ENV workdir /app
WORKDIR ${workdir}

COPY target/macula-cloud-iam-*.jar /app/macula-cloud-iam.jar
# 暴露9010端口
EXPOSE 9010
# 运行时的命令
ENTRYPOINT [ "sh", "-c", "java -jar ${JAVA_OPTS} macula-cloud-iam.jar" ]
  • 构建Docker镜像
docker build -t macula-cloud-iam:5.0.10 .
  • 运行Docker镜像
# -i 打开STDIN,用于控制台交互
# -t 分配tty设备,该可以支持终端登录,默认为false 
# -d 指定容器运行于前台还是后台,默认为false
# --name 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
# -e 指定环境变量,容器中可以使用该环境变量
docker run -i -t -d --name macula-cloud-iam -e JAVA_OPTS="-Xms2048m -Xmx2048m -Xmn800m -XX:PermSize=256m -XX:MaxPermSize=256m" macula-cloud-iam:5.0.10