快速部署 如何批量修改20个配置文件 替换密码及域名配置 一键启动20个服务.
**背景:**
快速部署新环境,大家都知道用docker部署。
大家部署服务遇到一下痛点问题:
1)如何快速修改200个配置文件的域名配置。 默认是sample.com, 需要替换为 cnzh.com
2)在applo 配置系统 如何批量修改域名。 默认是sample.com, 需要替换为 cnzh.com
3)如何解决快速启动的服务依赖关系. 只有 A 服务启动,B服务才可以正常启动。
4)dock-compose是什么东西,如何安装及使用。
### 1)如何快速修改20个配置文件的域名配置。 默认是sample.com, 需要替换为 cnzh.com
先查找 包含sample.com内容的配置文件.
```shell
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker# ls -Rl|grep env
drwxr-xr-x 2 cnhz cnhz 4096 Jan 21 11:25 env
./env:
-rw-r--r-- 1 cnhz cnhz 91 Jan 19 18:38 mysql.env
-rw-r--r-- 1 cnhz cnhz 231 Jan 19 18:38 nacos-embedded.env
-rw-r--r-- 1 cnhz cnhz 229 Jan 19 18:38 nacos-hostname.env
-rw-r--r-- 1 cnhz cnhz 224 Jan 19 18:38 nacos-ip.env
-rw-r--r-- 1 cnhz cnhz 280 Jan 21 11:25 nacos-standlone-mysql.env
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker# grep -rla sample.com ./env/
./env/mysql.env
./env/nacos-ip.env
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker# grep -a sample.com ./env/mysql.env
payUrl=https://sample.com
gatewayUrl=https://sample.com/api
## 下面准备做替换 sed -i 's/sample.com/cnhz.com/g' `grep -rla sample.com ./env/`
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker# grep -rla sample.com ./env/
./env/mysql.env
./env/nacos-ip.env
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker# sed -i 's/sample.com/cnhz.com/g' `grep -rla sample.com ./env/`
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker# grep -rla sample.com ./env/
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker# grep -rla cnhz.com ./env/
./env/mysql.env
./env/nacos-ip.env
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker# grep -rla cnhz.com ./env/mysql.env
./env/mysql.env
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker# grep -a cnhz.com ./env/mysql.env
payUrl=https://cnhz.com
gatewayUrl=https://cnhz.com/api
```
### 2)applo 配置系统 如何批量修改域名。 默认是sample.com, 需要替换为 cnzh.com
##### 在apolloconifgdb中修改 配置表 :item `release`
```mysql
-- 先做备份 索引及数据
-- create table item_back as select * from item;
-- create table release_back as select * from `release`;
create table release_back like `release`;
INSERT INTO release_back3 SELECT * FROM `release`;
create table item_back like item;
INSERT INTO item_back SELECT * FROM `item`;
-- 查看更新数据
SELECT replace(`Value`,'sample.com','cnhz.com'), item_copy.* from item
where `Value` like '%sample.com%';
UPDATE item it set it.`value` = replace(`Value`,'sample.com','cnhz.com')
where `Value` like '%sample.com%';
-- 查看更新数据
SELECT replace(`Configurations`,'sample.com','cnhz.com'),Configurations from `release`
where Configurations like '%sample.com%';
UPDATE `release` it set it.`Configurations` = replace(`Configurations`,'sample.com','cnhz.com')
where `Configurations` like '%sample.com%';
```
### 3) 如何解决启动的服务依赖关系, 只有 A 服务启动,B服务才可以正常启动。
##### 3.1 依赖描述 《 depends_on: - mysql》
```yaml
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker/example# more standalone-mysql-5.7.yaml
version: "2"
services:
nacos:
image: nacos/nacos-server:latest
container_name: nacos-standalone-mysql
env_file:
- ../env/nacos-standlone-mysql.env
volumes:
- ./standalone-logs/:/home/nacos/logs
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8848:8848"
- "9555:9555"
depends_on:
- mysql
restart: on-failure
mysql:
container_name: mysql
image: nacos/nacos-mysql:5.7
env_file:
- ../env/mysql.env
volumes:
- ./mysql:/var/lib/mysql
ports:
- "3306:3306"
```
##### 启动 nacos 依赖服务 mysql 服务
```shell
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker/example# docker-compose -f standalone-mysql-5.7.yaml up -d nacos
Recreating mysql ... done
Recreating nacos-standalone-mysql ... done
-- 运行结果: 先启动mysql,再启动了nacos
```
##### 启动 yaml描述的所有服务
```shell
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker/example# docker-compose -f standalone-mysql-5.7.yaml up -d
mysql is up-to-date
Creating grafana ...
Creating grafana ... done
Creating prometheus ... done
```
##### 停止服务
```shell
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker/example# docker-compose -f standalone-mysql-5.7.yaml stop nacos
Stopping nacos-standalone-mysql ...
Stopping nacos-standalone-mysql ... done
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker/example# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ebd4a914097c nacos/nacos-server:latest "bin/docker-startup.…" 6 minutes ago Exited (137) 31 seconds ago nacos-standalone-mysql
3b977042db1a nacos/nacos-mysql:5.7 "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
```
##### 删除容器服务(不是容器名称)
```shell
-- 删除容器服务
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker/example# docker-compose -f standalone-mysql-5.7.yaml rm nacos
Going to remove nacos-standalone-mysql
Are you sure? [yN] y
Removing nacos-standalone-mysql ... done
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker/example# docker-compose -f standalone-mysql-5.7.yaml up -d nacos
mysql is up-to-date
Creating nacos-standalone-mysql ... done
root@iZbp1bihe2j8lxgvst6g5rZ:/opt/nacos-docker/example# docker-compose -f standalone-mysql-5.7.yaml rm nacos-standalone-mysql
ERROR: No such service: nacos-standalone-mysql
```
### 4)dock-compose是什么软件,如何安装及使用。
Compose 是用于定义和运行多容器 Docker 应用程序的工具。
通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。
然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
##### 安装docker
``` shell
curl -sSL https://get.daocloud.io/docker | sh
```
##### 安装 docker-compose
```shell
curl -L https://get.daocloud.io/docker/compose/releases/download/1.28.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
```