最简单的本机测试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:39013
和39017: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"
表示除非手动停止容器,否则在容器意外停止时会自动重启。