主数据管理平台 主数据管理平台
产品介绍
产品安装指南
快速入门手册
用户操作手册
接口文档
  • 基础镜像说明
  • 套件版镜像
  • 套件版安装包准备
  • 后端服务Dockerfile
  • 构建镜像
  • 启动服务
  • 微服务版镜像
  • 微服务版安装包准备
  • 后端服务Dockerfile
  • 构建镜像
  • 启动服务

本文档介绍使用主数据安装介质制作Docker镜像,镜像分为套件版镜像和微服务版镜像。

# 基础镜像说明

在制作Docker镜像前,需要确认系统的CPU架构,根据CPU架构类型选择合适的基础镜像。

查看系统架构

执行如下命令查看系统架构

# x86架构
[root@localhost ~]# arch
x86_64

# arm架构
[root@localhost ~]# arch
arm64

选择镜像,根据架构选择基础镜像,基础镜像如下:

# x86架构
FROM registry.cn-shanghai.aliyuncs.com/primeton-pub/rockylinux:8.8-jdk8

# arm架构
FROM registry.cn-shanghai.aliyuncs.com/primeton-pub/rockylinux:8.8-jdk8-arm

# 套件版镜像

# 套件版安装包准备

解压Primeton_MDM_7.3.0_Standalone.tar.gz,将server/pubresmng_ext_lib目录移动到server/mdm目录下。同时修改server/mdm/config/application-comp-pubresmng.properties文件,修改public-resource.database.library.path`配置值修,如下:

public-resource.database.library.path=${loader.path}/../pubresmng_ext_lib

进入到server/mdm目录下,执行如下命令,打包后端服务。

tar -zcvf Primeton_MDM_7.3.0_Standalone_Server.tar.gz *

# 后端服务Dockerfile

创建Dockerfile文件,命名为Dockerfile-MDM-Standalone,内容如下:

FROM registry.cn-shanghai.aliyuncs.com/primeton-pub/rockylinux:8.8-jdk8
MAINTAINER www.primeton.com
ENV APP_NAME=MDM APP_PORT=28090 \
    EOS_SYS_KEY= EOS_PROFILE= REDIS_HOST= REDIS_PORT= REDIS_PASSWORD= NACOS_URL= SW_URL= \
    JAVA_OPTS= PATCH_URLS= LICENSE_URL=

WORKDIR /opt/server
ADD Primeton_MDM_7.3.0_Standalone_Server.tar.gz .

RUN \
    sed -i "/export APP_NAME=.*$/cexport APP_NAME=${APP_NAME}" bin/startup.sh ;\
    sed -i "/^export EOS_DAP_MEM_OPTS=/d" bin/startup.sh ;\
    \
    sed -i "/spring.application.name=.*$/cspring.application.name=${APP_NAME}" config/application.properties ;\
    \
    sed -i "73,76s/<configValue key=\"Database-Type\">.*/<configValue key=\"Database-Type\">\${DB_TYPE}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "73,76s/<configValue key=\"C3p0-DriverClass\">.*/<configValue key=\"C3p0-DriverClass\">\${DB_DRIVER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "73,76s/<configValue key=\"C3p0-Url\">.*/<configValue key=\"C3p0-Url\">\${DB_URL}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "73,76s/<configValue key=\"C3p0-UserName\">.*/<configValue key=\"C3p0-UserName\">\${DB_USER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "73,76s/<configValue key=\"C3p0-Password\">.*/<configValue key=\"C3p0-Password\">\${DB_PASSWD}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    \
    sed -i "97,97s/<configValue key=\"Database-Type\">.*/<configValue key=\"Database-Type\">\${PUB_DB_TYPE}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "97,97s/<configValue key=\"C3p0-DriverClass\">.*/<configValue key=\"C3p0-DriverClass\">\${PUB_DB_DRIVER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "97,97s/<configValue key=\"C3p0-Url\">.*/<configValue key=\"C3p0-Url\">\${PUB_DB_URL}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "97,97s/<configValue key=\"C3p0-UserName\">.*/<configValue key=\"C3p0-UserName\">\${PUB_DB_USER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "97,97s/<configValue key=\"C3p0-Password\">.*/<configValue key=\"C3p0-Password\">\${PUB_DB_PASSWD}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    \
    sed -i "/afc.application.name=.*$/cafc.application.name=AFCENTER" config/application-afc.properties

RUN echo -e '\
if [[ "${JAVA_OPTS}" == "" ]] || [[ "${JAVA_OPTS}" != *"-XX:MaxRAMPercentage"* ]]; \n\
then \n\
    export JAVA_OPTS="-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0 ${JAVA_OPTS}" \n\
fi \n\
if [[ "${PATCH_URLS}" != "" ]]; \n\
then \n\
    cd /opt/server/lib \n\
    IFS="," read -ra urls <<< "$PATCH_URLS" \n\
    for url in "${urls[@]}" \n\
    do \n\
        curl -O $url \n\
        filename=$(basename "$url") \n\
        if [[ "${filename}" == *".zip" ]]; \n\
        then \n\
            unzip ${filename} && rm -f ${filename} \n\
        fi \n\
    done \n\
fi \n\
if [[ "${LICENSE_URL}" != "" ]]; \n\
then \n\
    curl -o /opt/primetonlicense.xml $LICENSE_URL \n\
fi \n\
sed -i "/server.port=.*$/cserver.port=${APP_PORT}" /opt/server/config/application.properties \n\
if [[ "${EOS_SYS_KEY}" != "" ]]; \n\
then \n\
    sed -i "/eos.application.sys-key=.*$/ceos.application.sys-key=${EOS_SYS_KEY}" /opt/server/config/application.properties \n\
fi \n\
if [[ "${EOS_PROFILE}" != "" ]]; \n\
then \n\
    sed -i "/eos.profiles.active=.*$/ceos.profiles.active=${EOS_PROFILE}" /opt/server/config/application.properties \n\
fi \n\
if [[ "${REDIS_HOST}" == "" ]]; \n\
then \n\
    sed -i "/spring.redis.timeout=.*$/c#spring.redis.timeout=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.host=.*$/c#spring.redis.host=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.port=.*$/c#spring.redis.port=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.password=.*$/c#spring.redis.password=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.lettuce.pool.max-active=.*$/c#spring.redis.lettuce.pool.max-active=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.lettuce.pool.max-idle=.*$/c#spring.redis.lettuce.pool.max-idle=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.lettuce.pool.max-wait=.*$/c#spring.redis.lettuce.pool.max-wait=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.lettuce.pool.min-idle=.*$/c#spring.redis.lettuce.pool.min-idle=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.lettuce.shutdown-timeout=.*$/c#spring.redis.lettuce.shutdown-timeout=" /opt/server/config/application.properties \n\
else \n\
    sed -i "/spring.redis.host=.*$/cspring.redis.host=${REDIS_HOST}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.port=.*$/cspring.redis.port=${REDIS_PORT}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.password=.*$/cspring.redis.password=${REDIS_PASSWORD}" /opt/server/config/application.properties \n\
fi \n\
if [[ "${NACOS_URL}" == "" ]]; \n\
then \n\
    sed -i "/spring.cloud.nacos.discovery.enabled=.*$/cspring.cloud.nacos.discovery.enabled=false" /opt/server/config/application-nacos.properties \n\
    sed -i "/spring.cloud.nacos.config.enabled=.*$/cspring.cloud.nacos.config.enabled=false" /opt/server/config/bootstrap.properties \n\
else \n\
    sed -i "/spring.cloud.nacos.discovery.enabled=.*$/cspring.cloud.nacos.discovery.enabled=true" /opt/server/config/application-nacos.properties \n\
    sed -i "/spring.cloud.nacos.discovery.server-addr=.*$/cspring.cloud.nacos.discovery.server-addr=${NACOS_URL}" /opt/server/config/application-nacos.properties \n\
    sed -i "/spring.cloud.nacos.config.enabled=.*$/cspring.cloud.nacos.config.enabled=true" /opt/server/config/bootstrap.properties \n\
    sed -i "/spring.cloud.nacos.config.server-addr=.*$/cspring.cloud.nacos.config.server-addr=${NACOS_URL}" /opt/server/config/bootstrap.properties \n\
fi \n\
if [[ "${SW_URL}" == "" ]]; \n\
then \n\
    /opt/server/bin/startup.sh run -opens \n\
else \n\
    sed -i '\''/-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=.*$/cexport JAVA_OPTS="$JAVA_OPTS -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=${SW_URL}"'\'' /opt/server/bin/startup.sh \n\
    /opt/server/bin/startup.sh run -opens -apm \n\
fi \n\
' > /opt/start.sh

RUN chmod +x /opt/start.sh
RUN chmod +x /opt/server/bin/*.sh
RUN chmod +x /opt/server/*.jar

EXPOSE ${APP_PORT}
CMD /bin/bash -c "/opt/start.sh"

# 构建镜像

将Dockerfile-MDM-Standalone文件和mdm_standalone.tar.gz放到空目录下,执行如下命令:

docker build . \
-f Dockerfile-MDM-Standalone \
-t registry.cn-shanghai.aliyuncs.com/primeton-pub/mdm-server:7.3.0

如果系统是arm64架构,需要增加--platform linux/arm64参数,并选择对应架构的基础镜像。

# 启动服务

执行如下命令启动服务:

docker run -d --name mdm-server \
-e JAVA_OPTS="-DDB_TYPE=mysql -DDB_DRIVER=com.mysql.jdbc.Driver -DDB_URL=jdbc:mysql://192.168.2.240:3306/mdm?characterEncoding=utf8&useSSL=false -DDB_USER=root -DDB_PASSWD=primeton -DPUB_DB_TYPE=mysql -DPUB_DB_DRIVER=com.mysql.jdbc.Driver -DPUB_DB_URL=jdbc:mysql://192.168.2.240:3306/mdm_pub?characterEncoding=utf8&useSSL=false -DPUB_DB_USER=root -DPUB_DB_PASSWD=primeton -Dspring.cloud.nacos.discovery.ip=192.168.2.240" \
-p 28090:28090 \
registry.cn-shanghai.aliyuncs.com/primeton-pub/mdm-server:7.3.0

# 微服务版镜像

# 微服务版安装包准备

解压Primeton_MDM_7.3.0_MicroApp.tar.gz,解决后可以看到后端服务的压缩包``Primeton_MDM_7.3.0_Server.tar.gz`。

# 后端服务Dockerfile

创建Dockerfile文件,命名为Dockerfile-MDM-MicroApp,内容如下:

FROM registry.cn-shanghai.aliyuncs.com/primeton-pub/rockylinux:8.8-jdk8
MAINTAINER www.primeton.com
ENV APP_NAME=MDM APP_PORT=28090 \
    EOS_SYS_KEY= EOS_PROFILE= REDIS_HOST= REDIS_PORT= REDIS_PASSWORD= NACOS_URL= SW_URL= \
    JAVA_OPTS= PATCH_URLS= LICENSE_URL=

WORKDIR /opt/server
ADD Primeton_MDM_7.3.0_Server.tar.gz .

RUN \
    sed -i "/export APP_NAME=.*$/cexport APP_NAME=${APP_NAME}" bin/startup.sh ;\
    sed -i "/^export EOS_DAP_MEM_OPTS=/d" bin/startup.sh ;\
    \
    sed -i "/spring.application.name=.*$/cspring.application.name=${APP_NAME}" config/application.properties ;\
    \
    sed -i "73,76s/<configValue key=\"Database-Type\">.*/<configValue key=\"Database-Type\">\${DB_TYPE}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "73,76s/<configValue key=\"C3p0-DriverClass\">.*/<configValue key=\"C3p0-DriverClass\">\${DB_DRIVER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "73,76s/<configValue key=\"C3p0-Url\">.*/<configValue key=\"C3p0-Url\">\${DB_URL}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "73,76s/<configValue key=\"C3p0-UserName\">.*/<configValue key=\"C3p0-UserName\">\${DB_USER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "73,76s/<configValue key=\"C3p0-Password\">.*/<configValue key=\"C3p0-Password\">\${DB_PASSWD}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    \
    sed -i "97,97s/<configValue key=\"Database-Type\">.*/<configValue key=\"Database-Type\">\${PUB_DB_TYPE}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "97,97s/<configValue key=\"C3p0-DriverClass\">.*/<configValue key=\"C3p0-DriverClass\">\${PUB_DB_DRIVER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "97,97s/<configValue key=\"C3p0-Url\">.*/<configValue key=\"C3p0-Url\">\${PUB_DB_URL}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "97,97s/<configValue key=\"C3p0-UserName\">.*/<configValue key=\"C3p0-UserName\">\${PUB_DB_USER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "97,97s/<configValue key=\"C3p0-Password\">.*/<configValue key=\"C3p0-Password\">\${PUB_DB_PASSWD}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    \
    sed -i "/afc.application.name=.*$/cafc.application.name=AFCENTER" config/application-afc.properties

RUN echo -e '\
if [[ "${JAVA_OPTS}" == "" ]] || [[ "${JAVA_OPTS}" != *"-XX:MaxRAMPercentage"* ]]; \n\
then \n\
    export JAVA_OPTS="-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0 ${JAVA_OPTS}" \n\
fi \n\
if [[ "${PATCH_URLS}" != "" ]]; \n\
then \n\
    cd /opt/server/lib \n\
    IFS="," read -ra urls <<< "$PATCH_URLS" \n\
    for url in "${urls[@]}" \n\
    do \n\
        curl -O $url \n\
        filename=$(basename "$url") \n\
        if [[ "${filename}" == *".zip" ]]; \n\
        then \n\
            unzip ${filename} && rm -f ${filename} \n\
        fi \n\
    done \n\
fi \n\
if [[ "${LICENSE_URL}" != "" ]]; \n\
then \n\
    curl -o /opt/primetonlicense.xml $LICENSE_URL \n\
fi \n\
sed -i "/server.port=.*$/cserver.port=${APP_PORT}" /opt/server/config/application.properties \n\
if [[ "${EOS_SYS_KEY}" != "" ]]; \n\
then \n\
    sed -i "/eos.application.sys-key=.*$/ceos.application.sys-key=${EOS_SYS_KEY}" /opt/server/config/application.properties \n\
fi \n\
if [[ "${EOS_PROFILE}" != "" ]]; \n\
then \n\
    sed -i "/eos.profiles.active=.*$/ceos.profiles.active=${EOS_PROFILE}" /opt/server/config/application.properties \n\
fi \n\
if [[ "${REDIS_HOST}" == "" ]]; \n\
then \n\
    sed -i "/spring.redis.timeout=.*$/c#spring.redis.timeout=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.host=.*$/c#spring.redis.host=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.port=.*$/c#spring.redis.port=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.password=.*$/c#spring.redis.password=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.lettuce.pool.max-active=.*$/c#spring.redis.lettuce.pool.max-active=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.lettuce.pool.max-idle=.*$/c#spring.redis.lettuce.pool.max-idle=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.lettuce.pool.max-wait=.*$/c#spring.redis.lettuce.pool.max-wait=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.lettuce.pool.min-idle=.*$/c#spring.redis.lettuce.pool.min-idle=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.lettuce.shutdown-timeout=.*$/c#spring.redis.lettuce.shutdown-timeout=" /opt/server/config/application.properties \n\
else \n\
    sed -i "/spring.redis.host=.*$/cspring.redis.host=${REDIS_HOST}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.port=.*$/cspring.redis.port=${REDIS_PORT}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.password=.*$/cspring.redis.password=${REDIS_PASSWORD}" /opt/server/config/application.properties \n\
fi \n\
if [[ "${NACOS_URL}" == "" ]]; \n\
then \n\
    sed -i "/spring.cloud.nacos.discovery.enabled=.*$/cspring.cloud.nacos.discovery.enabled=false" /opt/server/config/application-nacos.properties \n\
    sed -i "/spring.cloud.nacos.config.enabled=.*$/cspring.cloud.nacos.config.enabled=false" /opt/server/config/bootstrap.properties \n\
else \n\
    sed -i "/spring.cloud.nacos.discovery.enabled=.*$/cspring.cloud.nacos.discovery.enabled=true" /opt/server/config/application-nacos.properties \n\
    sed -i "/spring.cloud.nacos.discovery.server-addr=.*$/cspring.cloud.nacos.discovery.server-addr=${NACOS_URL}" /opt/server/config/application-nacos.properties \n\
    sed -i "/spring.cloud.nacos.config.enabled=.*$/cspring.cloud.nacos.config.enabled=true" /opt/server/config/bootstrap.properties \n\
    sed -i "/spring.cloud.nacos.config.server-addr=.*$/cspring.cloud.nacos.config.server-addr=${NACOS_URL}" /opt/server/config/bootstrap.properties \n\
fi \n\
if [[ "${SW_URL}" == "" ]]; \n\
then \n\
    /opt/server/bin/startup.sh run -opens \n\
else \n\
    sed -i '\''/-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=.*$/cexport JAVA_OPTS="$JAVA_OPTS -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=${SW_URL}"'\'' /opt/server/bin/startup.sh \n\
    /opt/server/bin/startup.sh run -opens -apm \n\
fi \n\
' > /opt/start.sh

RUN chmod +x /opt/start.sh
RUN chmod +x /opt/server/bin/*.sh
RUN chmod +x /opt/server/*.jar

EXPOSE ${APP_PORT}
CMD /bin/bash -c "/opt/start.sh"

# 构建镜像

将Dockerfile-MDM-Standalone文件和mdm_standalone.tar.gz放到空目录下,执行如下命令:

docker build . \
-f Dockerfile-MDM-MicroApp \
-t registry.cn-shanghai.aliyuncs.com/primeton-pub/mdm-server:7.3.0

如果系统是arm64架构,需要增加--platform linux/arm64参数,并选择对应架构的基础镜像。

# 启动服务

执行如下命令启动服务:

docker run -d --name mdm-server \
-e JAVA_OPTS="-DDB_TYPE=mysql -DDB_DRIVER=com.mysql.jdbc.Driver -DDB_URL=jdbc:mysql://192.168.2.240:3306/mdm?characterEncoding=utf8&useSSL=false -DDB_USER=root -DDB_PASSWD=primeton -DPUB_DB_TYPE=mysql -DPUB_DB_DRIVER=com.mysql.jdbc.Driver -DPUB_DB_URL=jdbc:mysql://192.168.2.240:3306/mdm_pub?characterEncoding=utf8&useSSL=false -DPUB_DB_USER=root -DPUB_DB_PASSWD=primeton -Dspring.cloud.nacos.discovery.ip=192.168.2.240" \
-e NACOS_URL=192.168.2.240:8848 \
-e REDIS_HOST=192.168.2.240 \
-e REDIS_PORT=6379 \
-e REDIS_PASSWORD= \
-p 28090:28090 \
registry.cn-shanghai.aliyuncs.com/primeton-pub/mdm-server:7.3.0

← 配置说明 Hikari数据源支持 →