再
mysql安装与基操
-
拉取mysql
docker pull mysql:8.0.27
-
定义挂载目录
mkdir -p /home/mysql/{conf,data}
-
配置my.cnf (window中是my.ini)
-
可以不用配置
-
开启mysql容器(bridge)
docker run -itd -p 2333:3306 \
--name mysql \
-v /home/mysql/conf/my.cnf:/etc/my.cnf \
-v /home/mysql/data:/var/lib/mysql \
--privileged=true \
--restart=always \
-e MYSQL_ROOT_PASSWORD=root123 \
-d mysql:8.0.27
privileged=true:使用该参数,container内的root拥有真正的root权限, 否则,container内的root只是外部的一个普通用户权限
restart=always:容器自动启动参数,其值可以为[no,on-failure,always]
no为默认值,表示容器退出时,docker不自动重启容器
on-failure表示,若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃
always表示,只要容器退出,则docker将自动重启容器
-
查看user表
select host, user, authentication_string, plugin from user;
-
查看root权限
SHOW GRANTS FOR 'root'@'%';
-
nacos数据库配置
-
nacos-mysql.sql 数据脚本导入数据库
默认的bridge网桥无法指定固定的ip,则会导致mysql服务的ip不固定,最好配置为自定义网络
docker run -itd -p 2333:3306 \
--name mysql \
--net mynet --ip 172.18.1.30 \
-v /home/mysql/conf/my.cnf:/etc/my.cnf \
-v /home/mysql/data:/var/lib/mysql \
--privileged=true \
--restart=always \
-e MYSQL_ROOT_PASSWORD=root123 \
-d mysql:8.0.27
mysql操作(navicat无法连接)
-
修改用户密码
alter user 'root'@'%' identified with mysql_native_password by 'root123';
flush privileges;
-
记得查看host是否为%
nacos服务部署
-
拉取镜像
docker pull nacos/nacos-server
-
启动nacos(设置启动参数)
docker run -it \
-e PREFER_HOST_MODE=ip \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.17.0.2 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root123 \
-p 9901:8848 \
--name nacos \
--restart=always \
nacos/nacos-server
如果出现 No DataSource set
检查ip是否对应
是否在同一网段下
检查数据库名称
检查root与密码
检查数据库中是否存在对应的表(是否执行脚本)
-
在控制台获得nacos配置
curl -X GET "http://ip:8848/nacos/v1/cs/configs?dataId=xx.yml&group=DEFAULT_GROUP"
curl -X GET "http://172.17.0.3:8848/nacos/v1/cs/configs?dataId=test.yml&group=DEFAULT_GROUP"
nacos集群搭建
基于自定义网络: 可以自定义ip
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.18.1.42:8848 172.18.1.43:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.18.1.30 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root123 \
-p 9901:8848 \
--name nacos01 \
--net mynet --ip 172.18.1.41 \
--restart=always \
nacos/nacos-server
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.18.1.41:8848 172.18.1.43:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.18.1.30 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root123 \
-p 9902:8848 \
--name nacos02 \
--net mynet --ip 172.18.1.42 \
--restart=always \
nacos/nacos-server
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.18.1.41:8848 172.18.1.42:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.18.1.30 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root123 \
-p 9903:8848 \
--name nacos03 \
--net mynet --ip 172.18.1.43 \
--restart=always \
nacos/nacos-server
反向代理(负载均衡)
upstream tomcatList {
server 172.18.0.5:8081 weight=1;
server 172.18.0.3:8081 weight=2;
server 172.18.0.4:8081 weight=2;
}
upstream nacosList {
server 172.18.1.41:8848 weight=1;
server 172.18.1.42:8848 weight=2;
server 172.18.1.43:8848 weight=2;
}
server {
listen 80;
server_name www.zking.com;
location / {
root /etc/nginx/html/;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location /nacos {
proxy_pass http://nacosList;
}
location ~^/api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://tomcatList;
proxy_redirect default;
}
}
-
方法一
docker run -itd \
--name nginx \
-v /home/nginx/conf.d:/etc/nginx/conf.d \
-v /home/nginx/html:/etc/nginx/html \
-v /home/nginx/log:/usr/log/nginx \
-p 8080:80 \
nginx
docker network connect mynet nginx
-
方法二
docker run -itd \
--name nginx \
--net mynet \
-v /home/nginx/conf.d:/etc/nginx/conf.d \
-v /home/nginx/html:/etc/nginx/html \
-v /home/nginx/log:/usr/log/nginx \
-p 8080:80 \
nginx