" />
文章

最简单的本机测试HANA数据库方案,使用docker搭建sap_hana数据库

1. 建立文件夹&建立文件

mkdir saphana
cd saphana
mkdir dump
mkdir post_start
touch seccomp.json
touch sap_hana.yml
cd ..

2. 授权

chmod 777 saphana

3. 修改文件内容

{
    "defaultAction": "SCMP_ACT_ERRNO",
    "archMap": [
        {
            "architecture": "SCMP_ARCH_X86_64",
            "subArchitectures": [
                "SCMP_ARCH_X86",
                "SCMP_ARCH_X32"
            ]
        }
    ],
    "syscalls": [
        {
            "names": [
                "move_pages",
                "mbind",
                "unshare",
                "clone",
                "setns"
            ],
            "action": "SCMP_ACT_ALLOW"
        },
        {
            "names": [
                "*"
            ],
            "action": "SCMP_ACT_ALLOW"
        }
    ]
}

4. 修改yml配置

version: '3'
services:
  hana:
    container_name: express_edition
    image: saplabs/hanaexpress
    # hostname: 9ec0f0097fa8  # 设置为错误信息中给出的可接受的主机名
    # ports:
    #   - 39013:39013
    #   - 39017:39017
    #   - 39041-39045:39041-39045
    #   - 1128-1129:1128-1129
    #   - 59013-59014:59013-59014
    # volumes:
    #   - /home/detayun-sencetalk-uos/hana_data:/hana/mounts
    # ulimits:  # 设置容器的资源限制,例如文件句柄的最大数量。
    #   nofile:  # 配置文件描述符的软硬限制。
    #     soft: 1048576  # 设置文件描述符的软限制为 1048576。
    #     hard: 1048576  # 设置文件描述符的硬限制为 1048576。
    # sysctls:  # 配置内核参数,优化系统性能。
    #   kernel.shmmax: 1073741824  # 设置共享内存的最大值为 1073741824 字节(1GB)。
    #   kernel.shmmni: 524288  # 设置共享内存段的最大数量为 524288。
    #   kernel.shmall: 8388608  # 设置系统中所有共享内存段的页数的最大值为 8388608。
    #   net.ipv4.ip_local_port_range: "40000 60999"  # 设置本地可用的端口范围为 40000 到 60999,用于进程间通信。
    # # security_opt:  # 配置 Docker 安全选项。
    # #   - seccomp:unconfined
    # privileged: true
    # command: "--master-password HXEHana1 --agree-to-sap-license"  # 运行容器时执行的命令,设置主密码并同意 SAP 许可证条款。
    restart: "unless-stopped"
    ports:
      - 39013:39013
      - 39017:39017
      - 39041-39045:39041-39045
      - 1128-1129:1128-1129
      - 59013-59014:59013-59014 
    volumes:
      - ./post_start:/hana/hooks/post_start/
      - ./dump:/hana/mounts/dump/
    environment: 
      - DUMP_FOLDER=DUMP
      - SOURCE_SCHEMA=SOURCE
      - SCHEMA_NAME=LOCALDEV
      - SCHEMA_PWD=Localdev1
    command:
      - --agree-to-sap-license
      - --dont-check-system
      - --dont-check-mount-points
      - --master-password
      - HXEHana1

5. 解释一下yml的意义

5.1 services

  • 定义了多个服务,当前只有一个服务 hana

5.2 hana

  • container_name: express_edition

    • 容器的名称为 express_edition,在 Docker 中,这个容器将以这个名字显示。

  • image: saplabs/hanaexpress

    • 使用 SAP 提供的 saplabs/hanaexpress Docker 镜像,该镜像包含 SAP HANA Express Edition。

  • ports:

    • 映射宿主机的端口与容器内的端口。下面是各端口的含义:

      • 39013:3901339017:39017: 这些端口通常用于 HANA 的 SQL 和服务通信。

      • 39041-39045:39041-39045: 端口范围,用于 HANA 的多实例或其他服务。

      • 1128-1129:1128-1129: 可能用于 HANA 系统内部或外部的管理服务或通信。

      • 59013-59014:59013-59014: 可能用于远程调试或监控。

  • volumes:

    • 定义了挂载卷,用于将宿主机的文件系统路径与容器内部路径进行绑定,确保数据持久化或访问本地文件系统的资源。

      • ./post_start:/hana/hooks/post_start/: 将本地目录 ./post_start 挂载到容器的 /hana/hooks/post_start/,通常用于在 HANA 启动后执行一些自定义脚本。

      • ./dump:/hana/mounts/dump/: 将本地目录 ./dump 挂载到容器的 /hana/mounts/dump/,用于存储或访问数据转储文件。

  • environment:

    • 定义了环境变量,传递给容器内的应用程序:

      • DUMP_FOLDER=DUMP: 指定转储文件存储的文件夹。

      • SOURCE_SCHEMA=SOURCE: 指定源数据库架构的名称。

      • SCHEMA_NAME=LOCALDEV: 指定本地开发环境使用的数据库架构名称。

      • SCHEMA_PWD=Localdev1: 设置本地开发环境的架构密码。

  • command:

    • 通过命令行参数运行 SAP HANA Express 时提供特定的选项:

      • --agree-to-sap-license: 同意 SAP 的许可证条款,这是运行 HANA Express 的必备参数。

      • --dont-check-system: 跳过系统检查。

      • --dont-check-mount-points: 跳过挂载点的检查。

      • --master-password HXEHana1: 设置 HANA Express 的主密码为 HXEHana1,用于管理员用户登录。

  • restart: "unless-stopped

    • 配置容器的重启策略,"unless-stopped" 表示除非手动停止容器,否则在容器意外停止时会自动重启。

License:  CC BY 4.0