Docker快速部署基础中间件
·
环境:
- 宿主机挂载目录:
/data/middleware
├── mysql
├── redis
└── nacos
- MySQL:
- 镜像:
mysql:5.7 - 容器名:
mysql57_xj - 宿主端口:
3406 - 容器端口:
3306 - 密码:
YQs2UkB4y
- 镜像:
- Redis:
- 镜像:
redis:6.2 - 容器名:
redis6_xj - 宿主端口:
6479 - 容器端口:
6379 - 密码:
YQs2UkB4y
- 镜像:
- Nacos:
- 镜像:
nacos/nacos-server:v2.0.4 - 容器名:
nacos_xj - 端口:
8848/9848/9849 - 不开启鉴权
- 镜像:
一、创建目录
执行:
mkdir -p /data/middleware/mysql
mkdir -p /data/middleware/redis
mkdir -p /data/middleware/nacos
检查:
ls -l /data/middleware
二、部署 MySQL 5.7
1. 创建配置文件目录
mkdir -p /data/middleware/mysql/conf
创建配置:
vim /data/middleware/mysql/conf/my.cnf
内容:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-time-zone='+08:00'
max_connections=500
skip-name-resolve
innodb_buffer_pool_size=512M
2. 启动 MySQL
执行:
docker run -d \
--name mysql57_xj \
--restart always \
-p 3406:3306 \
-e MYSQL_ROOT_PASSWORD=YQs2UkB4y \
-e TZ=Asia/Shanghai \
-v /data/middleware/mysql/data:/var/lib/mysql \
-v /data/middleware/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
mysql:5.7
3. 查看 MySQL
docker ps | grep mysql57_xj
日志:
docker logs -f mysql57_xj
看到:
ready for connections
表示启动成功。
4. 登录测试
docker exec -it mysql57_xj mysql -uroot -p
密码:
YQs2UkB4y
测试:
select version();
三、部署 Redis 6.2
1. 创建 Redis 配置目录
mkdir -p /data/middleware/redis/conf
创建配置:
vim /data/middleware/redis/conf/redis.conf
内容:
bind 0.0.0.0
protected-mode no
requirepass YQs2UkB4y
appendonly yes
appendfsync everysec
2. 启动 Redis
执行:
docker run -d \
--name redis6_xj \
--restart always \
-p 6479:6379 \
-v /data/middleware/redis/data:/data \
-v /data/middleware/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
redis:6.2 \
redis-server /usr/local/etc/redis/redis.conf
3. 测试 Redis
进入:
docker exec -it redis6_xj redis-cli
认证:
auth YQs2UkB4y
测试:
ping
返回:
PONG
四、部署 Nacos 2.0.4
1. 创建目录
mkdir -p /data/middleware/nacos/logs
2. 启动 Nacos
执行:
docker run -d \
--name nacos_xj \
--restart always \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=standalone \
-e TZ=Asia/Shanghai \
-e NACOS_AUTH_ENABLE=false \
-v /data/middleware/nacos/logs:/home/nacos/logs \
nacos/nacos-server:v2.0.4
3. 查看 Nacos
docker ps | grep nacos_xj
日志:
docker logs -f nacos_xj
启动成功:
Nacos started successfully
4. 访问
浏览器:
http://服务器IP:8848/nacos
默认:
账号:
nacos
密码:
nacos
当前:
鉴权关闭
五、最终检查
查看所有 xj 容器:
docker ps | grep _xj
应该:
mysql57_xj
redis6_xj
nacos_xj
端口:
netstat -tunlp | grep -E "3406|6479|8848|9848|9849"
命令行创建数据库和导入sql文件
一、先创建 4 个数据库
进入 MySQL:
docker exec -it mysql57_xj mysql -uroot -p
输入:
YQs2UkB4y
进入后执行:
CREATE DATABASE dmp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE DATABASE link5g_mes DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE DATABASE link5g DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE DATABASE odsdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
查看:
SHOW DATABASES;
应该看到:
dmp
link5g_mes
link5g
odsdb
退出:
exit;
二、准备 SQL 文件
假设你现在有:
dmp.sql
link5g_mes.sql
link5g.sql
odsdb.sql
例如放在:
/data/sql/
查看:
ls -lh /data/sql/
应该:
/data/sql/dmp.sql
/data/sql/link5g_mes.sql
/data/sql/link5g.sql
/data/sql/odsdb.sql
三、导入数据库
1. 导入 dmp
执行:
docker exec -i mysql57_xj mysql -uroot -pYQs2UkB4y dmp < /data/sql/dmp.sql
2. 导入 link5g_mes
docker exec -i mysql57_xj mysql -uroot -pYQs2UkB4y link5g_mes < /data/sql/link5g_mes.sql
3. 导入 link5g
docker exec -i mysql57_xj mysql -uroot -pYQs2UkB4y link5g < /data/sql/link5g.sql
4. 导入 odsdb
docker exec -i mysql57_xj mysql -uroot -pYQs2UkB4y odsdb < /data/sql/odsdb.sql
四、检查是否导入成功
进入 MySQL:
docker exec -it mysql57_xj mysql -uroot -pYQs2UkB4y
查看:
USE dmp;
SHOW TABLES;
其他:
USE link5g_mes;
SHOW TABLES;
USE link5g;
SHOW TABLES;
USE odsdb;
SHOW TABLES;
查询每个库有多少张表
SELECT
s.SCHEMA_NAME AS database_name,
COUNT(t.TABLE_NAME) AS table_count
FROM information_schema.SCHEMATA s
LEFT JOIN information_schema.TABLES t
ON s.SCHEMA_NAME = t.TABLE_SCHEMA
WHERE s.SCHEMA_NAME NOT IN (
'information_schema',
'mysql',
'performance_schema',
'sys'
)
GROUP BY s.SCHEMA_NAME
ORDER BY s.SCHEMA_NAME;
五、如果 SQL 文件很大(推荐)
如果单个 SQL 几百 MB 或几个 GB,建议加参数:
docker exec -i mysql57_xj mysql \
-uroot \
-pYQs2UkB4y \
--max_allowed_packet=1G \
dmp < /data/sql/dmp.sql
否则可能报:
MySQL server has gone away
六、导入前建议检查 SQL 文件
先看开头:
head -30 /data/sql/dmp.sql
如果里面有:
CREATE DATABASE xxx;
USE xxx;
可能会覆盖你刚创建的库。
如果看到:
DROP DATABASE
或者:
CREATE DATABASE
导入命令示例:
先创建数据库
docker exec -it mysql57_xj mysql -uroot -pYQs2UkB4y -e "CREATE DATABASE IF NOT EXISTS dmp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE IF NOT EXISTS link5g_mes DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE IF NOT EXISTS link5g DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE DATABASE IF NOT EXISTS odsdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
导入 dmp.sql → dmp库
docker exec -i mysql57_xj mysql -uroot -pYQs2UkB4y dmp < /data/temp/dmp.sql
如果 SQL 文件比较大
docker exec -i mysql57_xj mysql -uroot -pYQs2UkB4y --max_allowed_packet=1G dmp < /data/temp/dmp.sql
更多推荐
所有评论(0)