国产化部署
说明:在 Uos
操作系统arm64
架构服务器上实现项目国产化。
实现列表:
- 应用层
- Sqlite
- 达梦数据库
应用层
可执行文件启动
说明:由于这个服务需要用到Sqlite,并且需要在linux/arm64服务器上执行。而我们的项目在windos环境下开发,就需要使用到交叉编译。由于安装了桌面版的ubuntu,可以通过linux环境访问到window路径。
1
| sudo apt-get install gcc-aarch64-linux-gnu
|
- 设置环境变量(设置环境变量以指示编译器和链接器使用arm64交叉编译工具链)
1 2
| export CC=aarch64-linux-gnu-gcc export CXX=aarch64-linux-gnu-g++
|
- 通过linux环境进入到项目目录,交叉编译项目(以
unix-test
项目举例)
1 2 3
| cd unix-test
GOOS=linux GOARCH=arm64 CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc go build -v --ldflags="-X 'google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn'" -o unix-test cmd/main.go
|
- 成功编译后,将可执行文件拷入
linx/arm64
服务器上
- 升级权限
可以看到使用的 Sqlite
数据库,连接成功,并且调用接口成功。
docker启动
在上面可执行文件基础上,使用arm64系统的基础镜像,进行docker部署
- 在terminal(终端)上执行复制的命令(我使用的devel版本,可自行选择版本下载)
1
| docker pull arm64v8/ubuntu:devel
|
注:这里试过无数个 busybox
基础镜像版本,都不行;arm64v8/centos:latest
测试过也是可以的,但是被弃用了,所以就使用ubuntu了
- 将
Dockerfile
文件拷贝到服务器可执行文件 unix-test
目录下, 修改FROM
1
| FROM arm64v8/ubuntu:devel
|
1
| docker build -t unix-test:1.0.0 .
|
Sqlite
再windows环境下直接生成db文件即可。将db文件拷入 linux/arm64
服务对应文件,读取即可。
- 生成db文件(以
unix-test.db
为例)
- 再
sqlite
目录下会生成一个 unix-test.db
文件,拷入 linux/arm64
服务器对应位置
达梦数据库
需要下载使用arm64系统的镜像
- 在terminal(终端)上执行复制的命令(镜像很大,下载很慢)
1
| docker pull qinchz/dm8-arm64
|
1
| docker save -o dm8-arm64.img qinchz/dm8-arm64:latest
|
- 将镜像拷入到arm64服务器
- 创建docker-compose.yml文件
vim docker-compose.yml
1 2 3 4 5 6 7 8 9 10
| version: '3' services: DM8: image: qinchz/dm8-arm64:latest restart: always container_name: dm8 ports: - "5236:5236" volumes: - /home/test/kst/yanwq/md8/data:/home/dmdba/data
|
参数说明:
version: '3'
:指定使用的Docker Compose文件版本
services
:定义服务的部分开始
DM8
:定义服务的名称为DM8
image
:指定使用的镜像为qinchz/dm8-arm64:latest
restart: always
:指定容器在退出时自动重启
container_name: dm8
:指定创建的容器名称为dm8
ports
:指定容器端口映射关系
5236:5236
:将主机的5236端口映射到容器的5236端口
mem_limit: 1g
:限制容器使用的内存为1GB
memswap_limit: 1g
:限制容器可以使用的swap交换空间为1GB
volumes
:指定挂载卷的配置
/home/test/kst/yanwq/md8/data:/home/dmdba/data
:将主机的/home/test/kst/yanwq/md8/data目录挂载到容器的/home/dmdba/data目录,实现主机和容器之间的文件共享
使用DBeaver运行达梦数据库