国产化开发环境高效搭建:Docker与达梦8.1在银河麒麟V10上的实践
对于需要在信创环境下进行软件开发的程序员来说,快速搭建一个稳定、高效的本地开发环境是项目成功的第一步。本文将详细介绍如何在银河麒麟V10桌面版操作系统上,利用Docker容器技术快速部署达梦8.1数据库,打造一个可移植、易维护的开发环境。
1. 环境准备与基础配置
在开始之前,我们需要确保开发机器满足基本要求。推荐使用搭载飞腾2000处理器的硬件平台,预装银河麒麟V10桌面版操作系统。这个组合为国产化开发提供了坚实的硬件和软件基础。
1.1 系统检查与更新
首先,通过以下命令检查系统基本信息:
uname -a cat /etc/os-release确保系统已经更新到最新版本:
sudo apt update && sudo apt upgrade -y1.2 Docker环境准备
银河麒麟V10可能预装了较旧版本的Docker,我们需要先卸载旧版本:
sudo apt-get remove docker docker-engine docker.io containerd runc然后清理残留文件:
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd2. Docker安装与优化配置
2.1 安装最新版Docker
对于ARM架构的飞腾2000平台,我们需要下载适配的Docker二进制包:
wget https://download.docker.com/linux/static/stable/aarch64/docker-20.10.9.tgz tar -xzvf docker-20.10.9.tgz sudo cp docker/* /usr/bin/2.2 配置Docker服务
创建systemd服务文件/etc/systemd/system/docker.service:
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity TimeoutStartSec=0 Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target启用并启动Docker服务:
sudo systemctl enable docker sudo systemctl start docker2.3 配置镜像加速
为了提高镜像拉取速度,配置国内镜像源:
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://registry.docker-cn.com"] } EOF sudo systemctl restart docker3. 达梦8.1数据库容器化部署
3.1 准备达梦数据库镜像
由于达梦官方可能不提供现成的Docker镜像,我们需要自行构建。首先创建Dockerfile:
FROM kylin:V10 # 安装基础依赖 RUN apt-get update && apt-get install -y \ libaio1 \ libncurses5 \ && rm -rf /var/lib/apt/lists/* # 创建dmdba用户 RUN groupadd dinstall && \ useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba && \ echo "dmdba:dmdba" | chpasswd # 创建工作目录 RUN mkdir -p /opt/dmdbms && \ chown -R dmdba:dinstall /opt/dmdbms # 复制达梦安装包 COPY dm8_setup_rh6_64_ent_8.1.1.78_20200430.iso /tmp/dm8.iso # 挂载并安装达梦数据库 RUN mkdir -p /mnt/dm8 && \ mount -o loop /tmp/dm8.iso /mnt/dm8 && \ cd /mnt/dm8 && \ ./DMInstall.bin -i && \ umount /mnt/dm8 && \ rm /tmp/dm8.iso # 设置环境变量 ENV PATH=/opt/dmdbms/bin:$PATH ENV LD_LIBRARY_PATH=/opt/dmdbms/bin:$LD_LIBRARY_PATH # 初始化数据库 RUN mkdir -p /opt/dmdata && \ chown dmdba:dinstall /opt/dmdata && \ su - dmdba -c "dminit path=/opt/dmdata" # 暴露端口 EXPOSE 5236 # 启动服务 CMD ["dmserver", "/opt/dmdata/DAMENG/dm.ini"]构建镜像:
docker build -t dm8:8.1 .3.2 运行达梦数据库容器
使用以下命令启动容器:
docker run -d \ --name dm8-server \ -p 5236:5236 \ -v /opt/dmdata:/opt/dmdata \ --ulimit nofile=65536:65536 \ dm8:8.13.3 数据库初始化
进入容器进行数据库初始化:
docker exec -it dm8-server /bin/bash su - dmdba disql SYSDBA/SYSDBA在SQL提示符下执行初始化脚本:
CREATE TABLESPACE test_data datafile '/opt/dmdata/test_data_01.dbf' size 1024; CREATE USER test IDENTIFIED BY test123 DEFAULT TABLESPACE test_data; GRANT DBA TO test;4. 开发环境整合与远程访问
4.1 配置远程桌面访问
为了便于从Windows开发机访问银河麒麟环境,可以安装xrdp服务:
sudo apt install xrdp -y sudo systemctl enable xrdp sudo systemctl start xrdpWindows用户可以使用内置的远程桌面连接工具(mstsc)连接到银河麒麟桌面环境。
4.2 开发工具配置
在银河麒麟环境中安装常用开发工具:
sudo apt install git maven openjdk-8-jdk -y配置Java开发环境:
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64' >> ~/.bashrc echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc source ~/.bashrc4.3 数据库连接配置
开发应用程序时,使用以下JDBC连接字符串连接达梦数据库:
jdbc:dm://localhost:5236 username=test password=test123对于Spring Boot项目,可以在application.properties中配置:
spring.datasource.url=jdbc:dm://localhost:5236 spring.datasource.username=test spring.datasource.password=test123 spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver5. 环境维护与优化
5.1 数据持久化与备份
为了确保数据安全,我们已将数据库文件挂载到宿主机/opt/dmdata目录。可以设置定期备份:
# 创建备份脚本 cat > /usr/local/bin/backup_dm.sh <<'EOF' #!/bin/bash BACKUP_DIR=/opt/dm_backups mkdir -p $BACKUP_DIR tar -czf $BACKUP_DIR/dm_backup_$(date +%Y%m%d).tar.gz /opt/dmdata find $BACKUP_DIR -type f -mtime +7 -delete EOF # 设置可执行权限 chmod +x /usr/local/bin/backup_dm.sh # 添加定时任务 (crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/backup_dm.sh") | crontab -5.2 性能监控
使用以下命令监控数据库性能:
# 查看容器资源使用情况 docker stats dm8-server # 进入容器查看数据库状态 docker exec -it dm8-server bash su - dmdba disql SYSDBA/SYSDBA在SQL提示符下可以执行各种监控命令:
-- 查看会话信息 SELECT * FROM V$SESSION; -- 查看SQL执行情况 SELECT * FROM V$SQLAREA;5.3 环境迁移
整个环境的优势在于可移植性。要迁移到新机器,只需:
- 将Docker镜像保存为文件:
docker save -o dm8_image.tar dm8:8.1- 备份数据目录:
tar -czf dm_data_backup.tar.gz /opt/dmdata- 在新机器上恢复:
docker load -i dm8_image.tar tar -xzf dm_data_backup.tar.gz -C / docker run -d --name dm8-server -p 5236:5236 -v /opt/dmdata:/opt/dmdata dm8:8.1在实际项目中,这种容器化的达梦数据库部署方式显著提高了开发效率。环境搭建时间从原来的半天缩短到现在的半小时内,且团队成员可以轻松共享相同的开发环境配置。