拉取mysql
docker pull mysql:8.0.27
定义挂载目录
mkdir -p /home/mysql/{conf,data}
配置(window中是)
省略
开启mysql容器(bridge)
docker run -itd -p 2333:3306 \
--name mysql \
-v /home/mysql/conf/:/etc/ \
-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不自动重启容器
no-failure表示,若容器的退出,则docker将自动重启容器
查看user表
select host, user,authentication_string, plugin from user
查看root权限
SHOW GRANTS FOR 'root'@'%'
nacos数据库配置
省略
注:默认的bridge网桥无法指定固定的ip,则会导致mysql服务的ip不固定,最好配置为自定义网络
docker run -itd -p 2333:3306 \
--name mysql \
--net mynet --ip 172.18.1.30 \
-v /home/mysql/conf/:/etc/ \
-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 SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.17.0.2 \
-e MYSQL_SERVICE_PSOT=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数据持久化测试
忽略
注:在控制台获得nacos配置
curl -X GET "http://ip:8848/nacos/v1/cs/configs?dataId=&group=DEFAULT_GROUP"
curl -X GET "http://172.17.0.3:8848/nacos/v1/cs/configs?dataId=&group=DEFAULT_GROUP"
nacos集群搭建
基于自定义网络:可以自定义ip
docker run -it \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.19.1.42:8848 172.19.1.43:8848"\
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.19.1.33 \
-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 mynet02 --ip 172.19.1.41 \
--restart=always \
nacos/nacos-server
docker run -it \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.19.1.41:8848 172.19.1.43:8848"\
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.19.1.33 \
-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 nacos02 \
--net mynet02 --ip 172.19.1.42 \
--restart=always \
nacos/nacos-server
docker run -it \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="172.19.1.41:8848 172.19.1.42:8848"\
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.19.1.33 \
-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 nacos03 \
--net mynet02 --ip 172.19.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 tomcatList{
server 172.18.1.41:8048 weight=1;
server 172.18.0.42:8048 weight=2;
server 172.18.0.43:8048 weight=2;
}
server{
listen 80;
server_name ;
location / {
root /etc/nginx/html/;
index ;
}
error_page 500 502 503 504 /;
location = /{
root /usr/share/nginx/html;
}
location ~^/api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://tomcatList;
proxy_redirect default;
}
}
方法一:
docker run -itd \
--name nginx \
-v /home/nginx/:/etc/nginx/ \
-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/:/etc/nginx/ \
-v /home/nginx/html:/etc/nginx/html \
-v /home/nginx/log:/usr/log/nginx \
-p 8080:80 \
nginx