docker部署nacos(mysql)
·
vim docker-compose.yml
version: "3.8"
services:
nacos:
image: nacos/nacos-server:v2.2.3
container_name: nacos
environment:
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=nacos-mysql
- MYSQL_SERVICE_DB_NAME=nacos_config
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=nacos
- MYSQL_SERVICE_PASSWORD=nacos
- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
- NACOS_AUTH_ENABLE=true
- NACOS_AUTH_IDENTITY_KEY=2222
- NACOS_AUTH_IDENTITY_VALUE=2222
- NACOS_AUTH_TOKEN=SecretKey243735678901234567890123456789012345678901234567890123456789
# volumes:
# - ./standalone-logs/:/home/nacos/logs
ports:
- "8848:8848"
- "9848:9848"
depends_on:
nacos-mysql:
condition: service_healthy
restart: always
nacos-mysql:
container_name: nacos-mysql
image: mysql:8.4.2
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
restart: always
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=nacos_config
- MYSQL_USER=nacos
- MYSQL_PASSWORD=nacos
- LANG=C.UTF-8
ports:
- 3308:3306
volumes:
- ./nacos-mysql/data:/var/lib/mysql
- ./nacos-mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf
- ./nacos-mysql/logs:/logs
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
timeout: 45s
interval: 10s
retries: 3
一键部署脚本
实现逻辑:
1、先启动一个nacos临时容器,把sql初始化脚本拷贝出来
2、启动mysql
3、导入sql
4、启动nacos
#! /bin/bash
function getsql() {
docker run -d --name tmp-nacos nacos/nacos-server:v2.2.3 && \
docker cp tmp-nacos:/home/nacos/conf/mysql-schema.sql ./ && \
docker rm -f tmp-nacos
echo "从nacos容器中获取初始化sql文件"
}
function startdb() {
mkdir -p nacos-mysql/conf
cat > nacos-mysql/conf/my.cnf <<EOF
###### [client]配置模块 ######
[client]
default-character-set=utf8mb4
###### [mysql]配置模块 ######
[mysql]
# 设置MySQL客户端默认字符集
default-character-set=utf8mb4
###### [mysqld]配置模块 ######
[mysqld]
port=3306
user=mysql
datadir=/var/lib/mysql
server-id = 1
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 0: 表名将按指定方式存储,并且比较区分大小写;
# 1: 表名以小写形式存储在磁盘上,比较不区分大小写;
lower_case_table_names=0
# 设置时区
default-time_zone='+8:00'
EOF
echo "启动mysql......."
docker-compose -f standalone-mysql-8.yaml up -d nacos-mysql
if [[ $? -eq 0 ]];then
sleep 30
echo "success: mysql启动成功"
else
echo "ERROR: mysql启动失败"
fi
}
function exportSql() {
docker exec -i nacos-mysql mysql -h 127.0.0.1 -u root -p'123456' nacos_config < mysql-schema.sql
if [[ $? -eq 0 ]];then
echo "success: sql导入成功"
else
echo "ERROR: sql导入失败"
fi
}
function startNacos() {
echo "启动nacos......."
docker-compose -f standalone-mysql-8.yaml up -d nacos
if [[ $? -eq 0 ]];then
echo "success: nacos启动成功"
else
echo "ERROR: nacos启动失败"
fi
}
getsql
startdb
exportSql
startNacos
更多推荐
所有评论(0)