1.准备工作
三台linux虚拟机(前端+后端+数据库中间件等)+docker安装包+镜像(postgre+nacos+中间件+系统微服务)+配置文件(docker-compose.yml+nacos配置+前端工程配置文件(cfg.js)),镜像都是在docker容器内使用
- 安装docker(在线)
sudo yum install -y yum-utils
sudo yum-config-manager
–add-repo
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io - 安装docker-compose(在线)
sudo curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose- ( u n a m e − s ) − (uname -s)- (uname−s)−(uname -m)” -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
----------也可自行搜索离线安装方法
- 从公司服务器拉取docker镜像(在线)
docker login -uname docker地址 输入密码后拉取镜像
docker pull 镜像名:tag
docker pull wurstmeister/kafka:latest(必装)
docker pull wurstmeister/zookeeper(必装)
其他中间件看实际情况而定 - 离线传输镜像
连接公司服务器
docker save 镜像名: tag> filename.tar
连接生产环境服务器
docker load < filename.tar - 进入测试环境nacos管理页面导出需要的配置文件,并导入到生产环境nacos,修改对应的ip和端口
- cfg.js从前端工程文件里导出,修改对应的ip和端口
- docker-compose.yml配置
version: ‘3.2’
services:
postgres:
image: postgres:14.1-alpine
env_file: /usr/pg.env
ports:
- 5432:5432
volumes:
- ./data:/var/lib/postgresql/data
zookeeper:
image: wurstmeister/zookeeper
container_name: ‘zookeeper’
restart: always
ports:
- “2181:2181”
networks:
kafka:
aliases:
- zookeeper
kafka:
image: wurstmeister/kafka:latest
container_name: ‘kafka’
restart: always
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.x.xxx
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
networks:
kafka:
aliases:
- ‘kafka’
ports:
- ‘9092:9092’
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- ‘zookeeper’
networks:
kafka:
driver: bridge
2.启动服务和镜像
- 启动postgre+kafka+zookeeper等,如有其它中间件需要在docker-compose.yml中配置
安装docker-compose后,进入docker-compose.yml所在目录
执行命令:
启动:docker-compose up -d | 停止:docker-compose down - 启动nacos
docker run -d --name nacos-3 -p 8848:8848 -p 9848:9848 -e MODE=standalone --restart=always nacos/nacos-server:v2.1.2 - 启动微服务镜像
后端:docker run -d --name hic-be-admin --network host docker.sunwaysaga.net/hic-be/admin:20 192.168.0.88 8500 test
前端:docker run -d --name hic-emr -p8213:8213 -v /root/data/hic/emr:/usr/share/nginx/html/static docker.sunwaysaga.net/hic/emr:297 proxy_api=http://192.168.1.236:8313/ mreditor_server=http://192.168.x.xxx:8000/ his_api=http://192.168.x.xxx:8070/api/fszyy/his/
/root/data/hic/emr:前端工程对应的cfg.js所在目录;
mreditor_server=http://192.168.x.xxx:8000/:电子病历编辑器所在服务器ip:端口;(电子病历用)
his_api=http://192.168.x.xxx:8070/api/fszyy/his/:his接口;(电子病历用)
- 若在启动前端服务后,跳转失败,需要检查cfg.js文件和数据库中oauth_client_details表每个子系统的回调地址和主页是否正确
4. docker命令
查看本地docker镜像:
docker images
启动,停止docker服务:
systemctl start docker | systemctl stop docker
启动停止docker容器:
docker start hic-masterdata | docker stop hic-masterdata
更新容器内存:
docker container update --memory=2G --memory-swap=2G hic-be-hr
删除本地镜像:
docker rm -f hic-emr
查看容器最后200行运行日志:
docker logs -f --tail=200 consul
- 如需进入docker容器中进行操作,例如取数据库中的表结构:
docker exec -it 容器id /bin/bash
导出数据库dump
pg_dump -s -U sunway md > /tmp/md-ddl.sql
exit:从docker容器中回到宿主机,把文件复制到宿主机指定路径
docker cp 2a9ca49ae58d:/tmp/md-ddl.sql /tmp - 在启动微服务过程中,如果遇到kafka topic找不到,需要手动创建topics:
先进入kafka容器,然后执行下面命令,加黑字体根据实际情况修改
kafka-topics.sh --bootstrap-server=localhost:9092 --create --topic DrugDistribute
kafka-topics.sh --bootstrap-server=localhost:9092 --create --topic DrugStockIncrease
kafka-topics.sh --bootstrap-server=localhost:9092 --create --topic MethodLog
kafka-topics.sh --bootstrap-server=localhost:9092 --create --topic RegCalled
kafka-topics.sh --bootstrap-server=localhost:9092 --create --topic RegStateChanged
kafka-topics.sh --bootstrap-server=localhost:9092 --create --topic TreatmentFinished
3.后期运维
硬盘扩展:
https://www.cnblogs.com/mihoutao/p/13826374.html
linux开放防火墙端口:
https://www.cnblogs.com/AllWjw/p/15761697.html
navicat定时备份任务:
https://blog.csdn.net/weixin_45816407/article/details/127208709
kettle基本使用:
https://blog.csdn.net/qq_52421831/article/details/127519448
运行内存清理:
http://www.nndssk.com/xtwt/186981nk5VXE.html
4.额外补充
- consul注册中心:
启动:docker run -d --network host --name consul consul agent -server -bootstrap -ui -node=agent-1 -client=0.0.0.0 -bind 192.168.0.88 -datacenter=name
导出consul中的配置文件:docker exec consul consul kv export > consul-kv.json
导入consul中的配置文件:docker exec consul consul kv import “$(cat consul-kv.json)”