普元数据资产管理平台 普元数据资产管理平台
  • 7.1GA (opens new window)
  • 7.1.1 (opens new window)
  • 7.2GA (opens new window)
  • 7.3GA (opens new window)
  • 7.3.1 (opens new window)
产品简介
快速开始
安装指南
业务门户
管理门户
技术门户
常见问题解答
开发指南
更新日志
  • dockerfile 说明
  • 概述
  • 基础镜像选择
  • 微服务版 DAMP 镜像构建
  • 1. Dockerfile 内容
  • 2. 构建镜像步骤
  • 3. 启动镜像示例
  • 套件版 DAMP 镜像构建
  • 1. 构建镜像步骤
  • 2. 启动镜像示例
  • 元数据 DGS 镜像构建
  • 1. 构建镜像步骤
  • 2. 启动镜像示例
  • 服务引擎 dataengine 镜像构建
  • 1. 构建镜像步骤
  • 2. 启动镜像示例
  • 数据质量执行器 executor 镜像构建
  • 1. 构建镜像步骤
  • 2. 启动镜像示例
  • 套件版本前端 nginx 镜像构建
  • 1. 构建镜像步骤
  • 2. 启动镜像示例

# dockerfile 说明

# 概述

产品介质中默认不包含镜像介质,需根据实际使用场景自行构建。本文提供微服务版和套件版的 Dockerfile 示例,可作为本地镜像打包的参考模板。如需更多标准镜像,可参考 EOS 官方文档 (opens new window)。

# 基础镜像选择

基础镜像需根据系统 CPU 架构选择,步骤如下:

  1. 查看系统架构
    执行以下命令确认当前系统架构:

    arch  # 输出可能为 x86_64(x64)或 aarch64(ARM)
    
  2. 选择对应架构的基础镜像

    # x64 架构
    FROM registry.cn-shanghai.aliyuncs.com/primeton-pub/rockylinux:8.8-jdk8
    
    # aarch64(ARM)架构
    FROM registry.cn-shanghai.aliyuncs.com/primeton-pub/rockylinux:8.8-jdk8-arm
    

⚠️ 注意:文中示例 IP(127.0.0.1)为演示用,实际部署需替换为环境真实 IP 地址。

# 微服务版 DAMP 镜像构建

适用于微服务架构场景,支持 Nacos 服务注册与发现等特性。

# 1. Dockerfile 内容

FROM registry.cn-shanghai.aliyuncs.com/primeton-pub/rockylinux:8.8-jdk8
MAINTAINER www.primeton.com
ENV APP_NAME=DAMP APP_PORT=28078 \
    EOS_SYS_KEY= EOS_PROFILE= \
    REDIS_HOST= REDIS_PORT= REDIS_USER= REDIS_PASSWORD= REDIS_CLUSTER_NODES= \
    REDIS_SENTINEL_MASTER= REDIS_SENTINEL_NODES= REDIS_SENTINEL_USER= REDIS_SENTINEL_PASSWORD= \
    NACOS_URL= NACOS_USER= NACOS_PASSWORD= \
    SW_URL= JAVA_OPTS= PATCH_URLS= LICENSE_URL=

WORKDIR /opt/server
ADD Primeton_DAMP_7.5.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 "16,36s/<configValue key=\"Database-Type\">.*/<configValue key=\"Database-Type\">\${DB_TYPE}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "16,36s/<configValue key=\"C3p0-DriverClass\">.*/<configValue key=\"C3p0-DriverClass\">\${DB_DRIVER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "16,36s/<configValue key=\"C3p0-Url\">.*/<configValue key=\"C3p0-Url\">\${DB_URL}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "16,36s/<configValue key=\"C3p0-UserName\">.*/<configValue key=\"C3p0-UserName\">\${DB_USER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "16,36s/<configValue key=\"C3p0-Password\">.*/<configValue key=\"C3p0-Password\">\${DB_PASSWD}<\/configValue>/" config/${APP_NAME}/config/user-config.xml


RUN echo -e '\
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.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.username=.*$/cspring.redis.username=${REDIS_USER}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.password=.*$/cspring.redis.password=${REDIS_PASSWORD}" /opt/server/config/application.properties \n\
elif [[ "${REDIS_CLUSTER_NODES}" != "" ]]; \n\
then \n\
    sed -i "/spring.redis.cluster.nodes=.*$/cspring.redis.cluster.nodes=${REDIS_CLUSTER_NODES}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.username=.*$/cspring.redis.username=${REDIS_USER}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.password=.*$/cspring.redis.password=${REDIS_PASSWORD}" /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\
elif [[ "${REDIS_SENTINEL_NODES}" != "" ]]; \n\
then \n\
    sed -i "/spring.redis.sentinel.master=.*$/cspring.redis.sentinel.master=${REDIS_SENTINEL_MASTER}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.sentinel.nodes=.*$/cspring.redis.sentinel.nodes=${REDIS_SENTINEL_NODES}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.sentinel.username=.*$/cspring.redis.sentinel.username=${REDIS_SENTINEL_USER}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.sentinel.password=.*$/cspring.redis.sentinel.password=${REDIS_SENTINEL_PASSWORD}" /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.username=.*$/c#spring.redis.username=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.password=.*$/c#spring.redis.password=" /opt/server/config/application.properties \n\
else \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.username=.*$/c#spring.redis.username=" /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\
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\
    sed -i "/spring.cloud.nacos.username=.*$/cspring.cloud.nacos.username=${NACOS_USER}" /opt/server/config/bootstrap.properties \n\
    sed -i "/spring.cloud.nacos.password=.*$/cspring.cloud.nacos.password=${NACOS_PASSWORD}" /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"

# 2. 构建镜像步骤

  1. 准备服务介质:下载 Primeton_DAMP_7.5.0_Server.tar.gz 并放在与 Dockerfile 同级目录。
  2. 创建 Dockerfile 文件:命名为 Dockerfile-DAMP,复制上述内容。
  3. 执行构建命令:
    docker build -t damp:7.5.0 -f Dockerfile-DAMP .
    

# 3. 启动镜像示例

docker run -d --name damp \
  -e JAVA_OPTS="-DDB_TYPE=mysql -DDB_DRIVER=com.mysql.jdbc.Driver -DDB_URL=jdbc:mysql://127.0.0.1:3306/damp?characterEncoding=utf8&useSSL=false -DDB_USER=root -DDB_PASSWD=primeton" \
  -e NACOS_URL=127.0.0.1:8848 \
  -e REDIS_HOST=127.0.0.1 \
  -e REDIS_PORT=6379 \
  -e REDIS_PASSWORD=primeton \
  -p 28078:28078 \
  damp:7.5.0

# 套件版 DAMP 镜像构建

适用于独立套件部署场景,支持与 DGS 服务集成。

# 1. 构建镜像步骤

  1. 准备套件版介质:

    • 下载 Primeton_DAMP_7.5.0_Standalone.tar.gz 介质并解压。
    • 将 ${standalone_path}/server/pubresmng_ext_lib 目录移动到 ${standalone_path}/server/damp/ 目录下。
    • 修改 ${standalone_path}/server/damp/config/application-pubresmng.properties:
      public-resource.database.library.path=${loader.path}/../pubresmng_ext_lib
      
    • 打包介质:进入 ${standalone_path}/server/damp 目录,执行 tar -zcvf damp_standalone.tar.gz *,并将生成的 damp_standalone.tar.gz 放在与 Dockerfile 同级目录。
  2. 创建 Dockerfile 文件:命名为 Dockerfile-DAMP,复制下方套件版 Dockerfile 内容。

FROM registry.cn-shanghai.aliyuncs.com/primeton-pub/rockylinux:8.8-jdk8
MAINTAINER www.primeton.com
ENV APP_NAME=DAMP APP_PORT=28084 \
    EOS_SYS_KEY= EOS_PROFILE= \
    REDIS_HOST= REDIS_PORT= REDIS_USER= REDIS_PASSWORD= REDIS_CLUSTER_NODES= \
    REDIS_SENTINEL_MASTER= REDIS_SENTINEL_NODES= REDIS_SENTINEL_USER= REDIS_SENTINEL_PASSWORD= \
    NACOS_URL= NACOS_USER= NACOS_PASSWORD= DGS_URL= \
    SW_URL= JAVA_OPTS= PATCH_URLS= LICENSE_URL=

WORKDIR /opt/server
ADD damp_standalone.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 "16,36s/<configValue key=\"Database-Type\">.*/<configValue key=\"Database-Type\">\${DB_TYPE}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "16,36s/<configValue key=\"C3p0-DriverClass\">.*/<configValue key=\"C3p0-DriverClass\">\${DB_DRIVER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "16,36s/<configValue key=\"C3p0-Url\">.*/<configValue key=\"C3p0-Url\">\${DB_URL}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "16,36s/<configValue key=\"C3p0-UserName\">.*/<configValue key=\"C3p0-UserName\">\${DB_USER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "16,36s/<configValue key=\"C3p0-Password\">.*/<configValue key=\"C3p0-Password\">\${DB_PASSWD}<\/configValue>/" config/${APP_NAME}/config/user-config.xml


RUN echo -e '\
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.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.username=.*$/cspring.redis.username=${REDIS_USER}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.password=.*$/cspring.redis.password=${REDIS_PASSWORD}" /opt/server/config/application.properties \n\
elif [[ "${REDIS_CLUSTER_NODES}" != "" ]]; \n\
then \n\
    sed -i "/spring.redis.cluster.nodes=.*$/cspring.redis.cluster.nodes=${REDIS_CLUSTER_NODES}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.username=.*$/cspring.redis.username=${REDIS_USER}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.password=.*$/cspring.redis.password=${REDIS_PASSWORD}" /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\
elif [[ "${REDIS_SENTINEL_NODES}" != "" ]]; \n\
then \n\
    sed -i "/spring.redis.sentinel.master=.*$/cspring.redis.sentinel.master=${REDIS_SENTINEL_MASTER}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.sentinel.nodes=.*$/cspring.redis.sentinel.nodes=${REDIS_SENTINEL_NODES}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.sentinel.username=.*$/cspring.redis.sentinel.username=${REDIS_SENTINEL_USER}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.sentinel.password=.*$/cspring.redis.sentinel.password=${REDIS_SENTINEL_PASSWORD}" /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.username=.*$/c#spring.redis.username=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.password=.*$/c#spring.redis.password=" /opt/server/config/application.properties \n\
else \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.username=.*$/c#spring.redis.username=" /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\
fi \n\
if [[ "${DGS_URL}" != "" ]]; \n\
then \n\
    sed -i "/public-resource.database.metadata.url=.*$/cpublic-resource.database.metadata.url=${DGS_URL}" /opt/server/config/application-pubresmng.properties \n\
fi \n\
if [[ "${SW_URL}" == "" ]]; \n\
then \n\
    /opt/server/bin/startup.sh run \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 -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"
  1. 执行构建命令:
    docker build -t damp:7.5.0 -f Dockerfile-DAMP .
    

# 2. 启动镜像示例

docker run -d --name damp \
  -e JAVA_OPTS="-DDB_TYPE=mysql -DDB_DRIVER=com.mysql.jdbc.Driver -DDB_URL=jdbc:mysql://127.0.0.1:3306/standalone_test?characterEncoding=utf8&useSSL=false -DDB_USER=root -DDB_PASSWD=primeton" \
  -e REDIS_HOST=127.0.0.1 \
  -e REDIS_PORT=6379 \
  -e DGS_URL='http://127.0.0.1:28079/dgs' \
  -p 28088:28084 \
  damp:7.5.0

# 元数据 DGS 镜像构建

# 1. 构建镜像步骤

  1. 准备元数据介质:

    • 下载 Primeton_MetaCube_7.5.1_Server.tar 和 Primeton_MetaCube_7.5.1_Extractor.tar 介质并解压。或者将套件版本介质解压后的 ${standalone_path}/service/dgs/ 目录下内容移动到当前打包目录下
  2. 创建 Dockerfile 文件:命名为 Dockerfile,复制下方 Dockerfile 内容。

FROM registry.cn-shanghai.aliyuncs.com/primeton-pub/rockylinux:8.8-jdk8
MAINTAINER www.primeton.com
ENV APP_NAME=DGS EOS_APP_PORT=28079 AFC_ENABLE=true AFC_LOGIN_URL= \
    DB_DRIVER= DB_URL= DB_USER= DB_PASSWD= JAVA_OPTS= PATCH_URLS= LICENSE_URL= REDIS_HOST= REDIS_PORT= REDIS_USER= REDIS_PASSWORD=

WORKDIR /opt/server
ADD server /opt/server
ADD extractor /opt/extractor

RUN sed -i "18,23s/url: .*/url: \${DB_URL}/" /opt/server/conf/application.yml ;\
    sed -i "49,52s/enabel:.*/enable: \${AFC_ENABLE}/" /opt/server/conf/application.yml ;\
    sed -i "49,52s/login_url:.*/login_url: \${AFC_LOGIN_URL}/" /opt/server/conf/application.yml

RUN echo -e '\
sed -i "1,3s/port: .*/port: ${EOS_APP_PORT}/" /opt/server/conf/application.yml \n\
if [[ "${DB_URL}" != "" ]]; \n\
then \n\
    # sed -i "18,23s/url: .*/url: ${DB_URL}/" /opt/server/conf/application.yml \n\
    sed -i "18,23s/driverClassName: .*/driverClassName: ${DB_DRIVER}/" /opt/server/conf/application.yml \n\
    sed -i "18,23s/username: .*/username: ${DB_USER}/" /opt/server/conf/application.yml \n\
    sed -i "18,23s/password: .*/password: ${DB_PASSWD}/" /opt/server/conf/application.yml \n\
fi \n\
if [[ "${REDIS_HOST}" != "" ]]; \n\
then \n\
    sed -i "10,14s/host: .*/host: ${REDIS_HOST}/" /opt/server/conf/application.yml \n\
    sed -i "10,14s/port: .*/port: ${REDIS_PORT}/" /opt/server/conf/application.yml \n\
    sed -i "10,14s/password: .*/password: ${REDIS_PASSWORD}/" /opt/server/conf/application.yml \n\
fi \n\
# if [[ "${REDIS_PASSWORD}" != "" ]]; \n\
# then \n\
#     sed -i "10,14s/password: .*/password: \${REDIS_PASSWORD}/" /opt/server/conf/application.yml \n\
# fi \n\
if [[ "${LICENSE_URL}" != "" ]]; \n\
then \n\
    curl -o /opt/primetonlicense.xml $LICENSE_URL \n\
fi \n\
/opt/extractor/metacube_extractor/extractor.sh start \n\
/opt/server/dgsServer.sh run \n\
' > /opt/start.sh


RUN chmod +x /opt/start.sh

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

  1. 执行构建命令:
    docker build . -f Dockerfile -t dgs:7.5.1
    

# 2. 启动镜像示例

docker run -d --name dgs \
    -e DB_DRIVER=com.mysql.jdbc.Driver \
    -e DB_URL="jdbc:mysql://127.0.0.1:3306/intergration75?characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true" \
    -e DB_USER=root \
    -e DB_PASSWD=primeton \
    -e REDIS_HOST=127.0.0.1 \
    -e REDIS_PORT=6379 \
    -e AFC_ENABLE=true \
    -e AFC_LOGIN_URL="http://127.0.0.1" \
    -p 28079:28079 \
    -p 9998:9998 \
    dgs:7.5.1

# 服务引擎 dataengine 镜像构建

# 1. 构建镜像步骤

  1. 准备服务引擎介质:

    • 下载 Primeton_DAMP_7.5.0_DataEngine.tar.gz 介质并解压。或者将套件版本介质解压后的 ${standalone_path}/server/dataengine 目录中内容移动到当前打包目录下 server 文件夹中
  2. 创建 Dockerfile 文件:命名为 Dockerfile,复制下方 Dockerfile 内容。

FROM registry.cn-shanghai.aliyuncs.com/primeton-pub/rockylinux:8.8-jdk8
MAINTAINER www.primeton.com
ENV APP_NAME=DataEnginePROD APP_PORT=10010 \
    EOS_SYS_KEY= EOS_PROFILE= \
    REDIS_HOST= REDIS_PORT= REDIS_USER= REDIS_PASSWORD= REDIS_CLUSTER_NODES= \
    REDIS_SENTINEL_MASTER= REDIS_SENTINEL_NODES= REDIS_SENTINEL_USER= REDIS_SENTINEL_PASSWORD= \
    NACOS_URL= NACOS_USER= NACOS_PASSWORD= \
    SW_URL= JAVA_OPTS= PATCH_URLS= LICENSE_URL=

WORKDIR /opt/server
ADD server /opt/server

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 "16,36s/<configValue key=\"Database-Type\">.*/<configValue key=\"Database-Type\">\${DB_TYPE}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "16,36s/<configValue key=\"C3p0-DriverClass\">.*/<configValue key=\"C3p0-DriverClass\">\${DB_DRIVER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "16,36s/<configValue key=\"C3p0-Url\">.*/<configValue key=\"C3p0-Url\">\${DB_URL}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "16,36s/<configValue key=\"C3p0-UserName\">.*/<configValue key=\"C3p0-UserName\">\${DB_USER}<\/configValue>/" config/${APP_NAME}/config/user-config.xml ;\
    sed -i "16,36s/<configValue key=\"C3p0-Password\">.*/<configValue key=\"C3p0-Password\">\${DB_PASSWD}<\/configValue>/" config/${APP_NAME}/config/user-config.xml


RUN echo -e '\
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.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.username=.*$/cspring.redis.username=${REDIS_USER}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.password=.*$/cspring.redis.password=${REDIS_PASSWORD}" /opt/server/config/application.properties \n\
elif [[ "${REDIS_CLUSTER_NODES}" != "" ]]; \n\
then \n\
    sed -i "/spring.redis.cluster.nodes=.*$/cspring.redis.cluster.nodes=${REDIS_CLUSTER_NODES}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.username=.*$/cspring.redis.username=${REDIS_USER}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.password=.*$/cspring.redis.password=${REDIS_PASSWORD}" /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\
elif [[ "${REDIS_SENTINEL_NODES}" != "" ]]; \n\
then \n\
    sed -i "/spring.redis.sentinel.master=.*$/cspring.redis.sentinel.master=${REDIS_SENTINEL_MASTER}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.sentinel.nodes=.*$/cspring.redis.sentinel.nodes=${REDIS_SENTINEL_NODES}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.sentinel.username=.*$/cspring.redis.sentinel.username=${REDIS_SENTINEL_USER}" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.sentinel.password=.*$/cspring.redis.sentinel.password=${REDIS_SENTINEL_PASSWORD}" /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.username=.*$/c#spring.redis.username=" /opt/server/config/application.properties \n\
    sed -i "/spring.redis.password=.*$/c#spring.redis.password=" /opt/server/config/application.properties \n\
else \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.username=.*$/c#spring.redis.username=" /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\
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\
    sed -i "/spring.cloud.nacos.username=.*$/cspring.cloud.nacos.username=${NACOS_USER}" /opt/server/config/bootstrap.properties \n\
    sed -i "/spring.cloud.nacos.password=.*$/cspring.cloud.nacos.password=${NACOS_PASSWORD}" /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"

  1. 执行构建命令:
    docker build . -f Dockerfile -t data-engine:7.5
    

# 2. 启动镜像示例

docker run -d --name data-engine \
    -e JAVA_OPTS="-DDB_TYPE=MySql -DDB_DRIVER=com.mysql.jdbc.Driver -DDB_URL=jdbc:mysql://127.0.0.1:3306/standalone?characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true -DDB_USER=root -DDB_PASSWD=primeton" \
    -e REDIS_HOST=127.0.0.1 \
    -e REDIS_PORT=6379 \
    -p 10010:10010 \
    data-engine:7.5

# 数据质量执行器 executor 镜像构建

# 1. 构建镜像步骤

  1. 准备服务引擎介质:

    • 下载 Primeton_QualityCube_7.3.0_Executor.tar.gz 介质并解压。或者将套件版本介质解压后的 ${standalone_path}/service/executor 目录中内容移动到当前打包目录下 server 文件夹中
  2. 创建 Dockerfile 文件:命名为 Dockerfile,复制下方 Dockerfile 内容。

FROM registry.cn-shanghai.aliyuncs.com/primeton-pub/rockylinux:8.8-jdk8
MAINTAINER www.primeton.com
ENV APP_NAME=QUALITY-EXECUTOR APP_PORT=28092 EXECUTOR_PORT=28094 \
    JAVA_OPTS= AFC_SERVER_URL= AFC_SERVER_TOKEN=

WORKDIR /opt/server
ADD server /opt/server

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

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 [[ "${DB_URL}" != "" ]]; \n\
then \n\
    sed -i "/spring.datasource.url=.*$/cspring.datasource.url=${DB_URL}" /opt/server/config/application.properties \n\
    sed -i "/spring.datasource.username=.*$/cspring.datasource.username=${DB_USER}" /opt/server/config/application.properties \n\
    sed -i "/spring.datasource.password=.*$/cspring.datasource.password=${DB_PASSWD}" /opt/server/config/application.properties \n\
    sed -i "/spring.datasource.driver-class-name=.*$/cspring.datasource.driver-class-name=${DB_DRIVER}" /opt/server/config/application.properties \n\
    sed -i "/pagehelper.helperDialect=.*$/cpagehelper.helperDialect=${DB_TYPE}" /opt/server/config/application.properties \n\
    sed -i "/mybatis.configuration.database-id=.*$/cmybatis.configuration.database-id=${DB_TYPE}" /opt/server/config/application.properties \n\
fi \n\
if [[ "${AFC_SERVER_URL}" != "" ]]; \n\
then \n\
    sed -i "/afc.server.url=.*$/cafc.server.url=${AFC_SERVER_URL}" /opt/server/config/application.properties \n\
    sed -i "/afc.server.token=.*$/cafc.server.token=${AFC_SERVER_TOKEN}" /opt/server/config/application.properties \n\
fi \n\
/opt/server/bin/startup.sh run -opens \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} ${EXECUTOR_PORT}
CMD /bin/bash -c "/opt/start.sh"

  1. 执行构建命令:
    docker build . -f Dockerfile -t quality-executor:7.3
    

# 2. 启动镜像示例

docker run -d --name quality-executor \
    -e DB_TYPE=mysql \
    -e DB_URL="jdbc:mysql://127.0.0.1:3306/standalone?characterEncoding=utf8&useSSL=false" \
    -e DB_DRIVER=com.mysql.jdbc.Driver \
    -e DB_USER=root \
    -e DB_PASSWD=primeton \
    -e AFC_SERVER_URL=http://127.0.0.1:28084 \
    -e AFC_SERVER_TOKEN=c0101b6109e8478784ceb8897159fe2b \
    -p 28092:28092 \
    -p 28094:28094 \
    quality-executor:7.3

# 套件版本前端 nginx 镜像构建

# 1. 构建镜像步骤

  1. 准备服务引擎介质:

    • 将套件版本介质解压后的 ${standalone_path}/web 目录中内容移动到当前打包目录下
  2. 创建 Dockerfile 文件:命名为 Dockerfile,复制下方 Dockerfile 内容。

FROM  registry.cn-shanghai.aliyuncs.com/primeton-pub/nginx:1.24.0
ENV WEB_PORT=80 MOBILE_PORT=81 BACKEND_ADDRESS= GATEWAY_ADDRESS= DGS_ADDRESS= IDATA_ADDRESS= EOS_SYS_KEY=

RUN mkdir -p /opt/{web,metacube}
ADD afcenter /opt/web
ADD metacube /opt/metacube

RUN echo '\
server { \n\
    listen  ${WEB_PORT}; \n\
    client_max_body_size 200m; \n\
    proxy_set_header Host $host; \n\
    proxy_set_header X-Real-IP $remote_addr; \n\
    proxy_set_header X-Real-Port $remote_port; \n\
    proxy_set_header REMOTE-HOST $remote_addr; \n\
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; \n\
    \n\
    location ^~/api/ { \n\
        proxy_pass ${BACKEND_ADDRESS}; \n\
    } \n\
    \n\
    location ~ /(.*)/api/ { \n\
        rewrite ^/(.*)/api/(.*)$ /api/$2 break; \n\
        proxy_pass ${BACKEND_ADDRESS}; \n\
    } \n\
    \n\
    location ~ \.biz\.ext$ { \n\
        proxy_pass ${BACKEND_ADDRESS}; \n\
    } \n\
    \n\
    location / { \n\
        root  /opt/web; \n\
        access_log /opt/access.log ; \n\
        error_log /opt/error.log warn; \n\
        index  index.html index.htm; \n\
        try_files $uri /index.html; \n\
    } \n\
} \n\
' > /opt/nginx-conf.template

RUN echo '\
server { \n\
    listen  ${WEB_PORT}; \n\
    client_max_body_size 200m; \n\
    proxy_set_header Host $host; \n\
    proxy_set_header X-Real-IP $remote_addr; \n\
    proxy_set_header X-Real-Port $remote_port; \n\
    proxy_set_header REMOTE-HOST $remote_addr; \n\
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; \n\
    \n\
    location /cboard { \n\
        add_header X-Frame-Options ALLOWALL; \n\
        proxy_pass ${IDATA_ADDRESS} ; \n\
    } \n\
    \n\
    location /fd_dgs/ { \n\
        proxy_pass http://127.0.0.1:83/ ; \n\
    } \n\
    \n\
    location ^~ /dgs { \n\
        charset utf-8; \n\
        proxy_pass ${DGS_ADDRESS}; \n\
    } \n\
    \n\
    location ^~/api/ { \n\
        proxy_set_header X-EOS-SourceSysKey ${EOS_SYS_KEY}; \n\
        proxy_pass ${GATEWAY_ADDRESS}; \n\
    } \n\
    \n\
    location ~ /(.*)/api/ { \n\
        proxy_set_header X-EOS-SourceSysKey ${EOS_SYS_KEY}; \n\
        proxy_pass ${GATEWAY_ADDRESS}; \n\
    } \n\
    \n\
    location ~ \.biz\.ext$ { \n\
        proxy_set_header X-EOS-SourceSysKey ${EOS_SYS_KEY}; \n\
        proxy_pass ${GATEWAY_ADDRESS}; \n\
    } \n\
    \n\
    location / { \n\
        root  /opt/web; \n\
        access_log /opt/access.log ; \n\
        error_log /opt/error.log warn; \n\
        index  index.html index.htm; \n\
        try_files $uri /index.html; \n\
    } \n\
} \n\
server { \n\
    listen 83; \n\
    proxy_buffer_size 128k; \n\
    proxy_buffers 32 128k; \n\
    proxy_busy_buffers_size 128k; \n\
    proxy_set_header Host $host; \n\
    proxy_set_header X-Real-IP $remote_addr; \n\
    proxy_set_header X-Real-Port $remote_port; \n\
    proxy_set_header REMOTE-HOST $remote_addr; \n\
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; \n\
    \n\
    location / { \n\
        root /opt/metacube; \n\
        index index.html index.htm; \n\
        try_files $uri /index.html; \n\
    } \n\
    location /dgs { \n\
        charset utf-8; \n\
        proxy_pass ${DGS_ADDRESS}; \n\
    } \n\
} \n\
' > /opt/nginx-conf-gateway.template

RUN echo '\
if [[ "${GATEWAY_ADDRESS}" == "" ]]; \n\
then \n\
    envsubst "\${WEB_PORT} \${MOBILE_PORT} \${BACKEND_ADDRESS} \${DGS_ADDRESS} \${IDATA_ADDRESS} \${GATEWAY_ADDRESS} \${EOS_SYS_KEY}" < /opt/nginx-conf.template > /etc/nginx/conf.d/default.conf \n\
else \n\
    envsubst "\${WEB_PORT} \${MOBILE_PORT} \${BACKEND_ADDRESS} \${DGS_ADDRESS} \${IDATA_ADDRESS} \${GATEWAY_ADDRESS} \${EOS_SYS_KEY}" < /opt/nginx-conf-gateway.template > /etc/nginx/conf.d/default.conf \n\
fi \n\
nginx -g "daemon off;" \n\
' > /opt/start.sh

RUN chmod +x /opt/start.sh

EXPOSE ${WEB_PORT} ${MOBILE_PORT}
CMD /bin/bash -c "/opt/start.sh"
  1. 执行构建命令:
    docker build . -f Dockerfile -t afcenter-ui:8.3.3
    

# 2. 启动镜像示例

docker run -d --name afcui \
  -e GATEWAY_ADDRESS=http://127.0.0.1:28084 \
  -e DGS_ADDRESS=http://127.0.0.1:28079 \
  -e IDATA_ADDRESS=http://127.0.0.1:8026 \
  -e EOS_SYS_KEY=dc6baaed30e541d78bb91274803d9432 \
  -p 80:80 \
  afcenter-ui:8.3.3
上次更新: 2025/9/28下午2:49:37

← 7.2 升级至 7.3 产品密码配置说明 →