一、Linux 部署 Docker
1.1 卸载旧版本(如有)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
1.2 安装 yum-utils 包
sudo yum install -y yum-utils
1.3 配置阿里云镜像仓库
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.4 安装 Docker Engine
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
1.5 启动 Docker
sudo systemctl start docker
1.6 查看 Docker 版本
docker --version
1.7 查看 Docker 服务状态
sudo systemctl status docker
1.8 配置阿里云镜像加速器
获取加速器地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
参考:https://docs.docker.com/engine/install/centos/
二、Linux 部署 MySQL
2.1 拉取 MySQL 镜像
docker pull mysql
2.2 查看本地镜像
docker images
2.3 创建目录存储数据信息
mkdir ~/mysql
cd ~/mysql
2.4 运行 MySQL 容器
docker run -id \
-p 3306:3306 \
--name mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql
参数 | 说明 |
---|---|
-v $PWD/conf:/etc/mysql/conf.d | 配置目录,将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf |
-v $PWD/logs:/logs | 日志目录,将主机当前目录下的 logs 目录挂载到容器的 /logs |
-v $PWD/data:/var/lib/mysql | 数据目录,将主机当前目录下的data目录挂载到容器的 /var/lib/mysql |
2.5 查看 MySQL 容器运行状态
docker ps -a
三、Linux 部署 Nacos
3.1 拉取 Nacos 镜像
docker pull nacos/nacos-server
3.2 查看本地镜像
docker images
3.3 创建目录存储数据信息
mkdir ~/nacos
cd ~/nacos
3.4 创建 Nacos 数据库
- 远程连接上 MySQL 容器,并创建数据库,这里数据库命名 nacos_config
- 执行 sql 脚本,脚本地址:https://github.com/alibaba/nacos/blob/develop/distribution/conf/mysql-schema.sql
3.5 第一次运行 Nacos 容器(获取配置文件)
docker run -d \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.120.1 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-p 8848:8848 \
--name nacos \
--restart=always \
nacos/nacos-server
参数说明:https://nacos.io/en-us/docs/quick-start-docker.html
192.168.120.1 为 Mysql 容器 ip 地址,获取 docker 所有容器 ip 地址命令:
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
3.6 创建目录并拷贝配置文件
mkdir ~/nacos/conf
docker cp nacos:/home/nacos/conf/application.properties ~/nacos/conf/
docker cp nacos:/home/nacos/conf/nacos-logback.xml ~/nacos/conf/
3.7 修改 application.properties 配置
# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_APPLICATION_PORT:8848}
# 修改此行,将SPRING_DATASOURCE_PLATFORM的默认值""改为mysql
spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:mysql}
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
# 修改此行,添加MYSQL_SERVICE_HOST的默认值为192.168.120.1,MYSQL_SERVICE_DB_NAME的默认值为nacos_config,修改MYSQL_SERVICE_DB_PARAM时区
db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST:192.168.120.1}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true}
# 修改此行,添加MYSQL_SERVICE_HOST的默认值为192.168.120.1,MYSQL_SERVICE_DB_NAME的默认值为nacos_config,修改MYSQL_SERVICE_DB_PARAM时区
db.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST:192.168.120.1}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME:nacos}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true}
# 修改此行,添加MYSQL_SERVICE_USER的默认值为root
db.user=${MYSQL_SERVICE_USER:root}
# 修改此行,添加MYSQL_SERVICE_PASSWORD的默认值为root
db.password=${MYSQL_SERVICE_PASSWORD:root}
### The auth system to use, currently only 'nacos' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### The token expiration in seconds:
nacos.core.auth.default.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:
nacos.core.auth.default.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D
# default current work dir
server.tomcat.basedir=
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
采用添加默认值的方式,这样不会影响指定命令行的参数。
3.8 第二次运行 Nacos 容器
运行之前先删除之前启动的容器
docker stop nacos
docker rm nacos
重新运行容器
docker run -d \
-e MODE=standalone \
-e JVM_XMS=256m -e JVM_XMX=256m \
-p 8848:8848 \
-v ~/nacos/conf:/home/nacos/conf \
-v ~/nacos/logs:/home/nacos/logs \
-v ~/nacos/data:/home/nacos/data \
--name nacos \
--restart=always \
nacos/nacos-server
3.9 访问 Nacos
http://ip:8848/nacos
数据库写入登录用户名&密码
INSERT INTO users (username, password, enabled)
VALUES ('nacos', '${new_password}', TRUE);
将 ${new_password} 替换为经过 BCrypt 加密的新密码。加密工具可使用 Nacos 提供的 PasswordEncoderUtil 类,通过运行 Java 代码获取加密后的密码。
在线加密地址:https://www.bejson.com/encrypt/bcrpyt_encode/