1、安装 Linux 系统

略,可使用 VMware 或阿里云等其他服务器,装完后顺便换个源,装个 JDK

2、安装 docker

略,不同系统有不同操作步骤

3、远程连接

通过 ssh 进行远程连接,使用 scp 进行文件上传与下载,无需下载其他软件,以下是在 Windows Terminal 中进行操作

ssh 用户名@域名或IP地址 #回车后输入该用户密码即可

docker部署springcloud的优缺点 docker部署springcloud微服务_linux

scp 本地文件路径 用户名@域名或IP地址:服务器文件路径 #上传文件, 若要上传文件夹则加上 -r scp 用户名@域名或IP地址:服务器文件路径 本地文件路径 #下载文件, 若要下载文件夹则加上 -r

docker部署springcloud的优缺点 docker部署springcloud微服务_centos_02

4、拉镜像

  • Nacos

docker pull nacos/nacos-server

  • Sentinel

docker pull bladex/sentinel-dashboard

  • MySQL

docker pull mysql

  • Nginx

docker pull nginx

5、开始搭建

5.1 启动 Docker

略,不同系统启动命令不同,另外记得配置一下开机启动

5.2 自定义网段

自定义网段的好处就是避免每次启动容器时动态分配 IP 地址,导致频繁修改 nginx.conf

docker network create --subnet=192.168.32.0/24 cying #ip可自己指定, cying是网段名, 可自己指定 docker network ls #查看当前已有网段

docker部署springcloud的优缺点 docker部署springcloud微服务_nginx_03

5.2 Nacos

docker run -d\
 -p 8848:8848\
 -e TZ="Asia/Shanghai"\
 --env MODE=standalone\
 --restart=always\
 --name Nacos\
 --net cying\
 --ip 192.168.32.10\
 nacos/nacos-server
-------------------------
请修改参数:--name、--net、--ip
其中:
	--net 和 --ip 根据自定义网段来设置

5.3 Sentinel

docker run -d\
 -p 8858:8858\
 -e TZ="Asia/Shanghai"\
 --restart=always\
 --name Sentinel\
 --net cying\
 --ip 192.168.32.11\
 bladex/sentinel-dashboard
-------------------------
请修改参数:--name、--net、--ip
其中:
	--net 和 --ip 根据自定义网段来设置

5.4 MySQL

前期准备

mkdir /docker/v/mysql/data
vim /docker/v/mysql/my.conf
# /docker/v/mysql 是我个人习惯, 读者可自行修改

my.conf 内容:

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

创建容器

docker run -d\
 -p 3306:3306\
 -e TZ="Asia/Shanghai"\
 -e MYSQL_ROOT_PASSWORD=root\
 --restart=always\
 --name MySQL\
 --net cying\
 --ip 192.168.32.9\
 -v /docker/v/mysql/config/my.conf:/etc/my.conf\
 -v /docker/v/mysql/data:/var/lib/mysql\
 mysql
-------------------------
请修改参数:--name、--net、--ip、-v
其中:
	--net 和 --ip 根据自定义网段来设置
	-v 请将 /docker/v/mysql 修改为自己的路径

5.5 Nginx

前期准备

mkdir /docker/v/nginx
vim /docker/v/nginx/nginx.conf

nginx.conf 内容:

user  nginx;
worker_processes  1;
error_log   /var/log/nginx/error.log warn;
pid         /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include         /etc/nginx/mime.types;
    default_type    application/octet-stream;
    log_format  main    '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout   65;
    #gzip   on;
    #server {
    #}
    include /etc/nginx/conf.d/*.conf;

}

创建容器

docker run -d\
 -p 80:80\
 -e TZ="Asia/Shanghai"\
 --restart=always\
 --name Nginx\
 --net cying\
 --ip 192.168.32.12\
 -v /docker/v/nginx/nginx.conf:/etc/nginx/nginx.conf\
 nginx
-------------------------
请修改参数:--name、--net、--ip、-v
其中:
	--net 和 --ip 根据自定义网段来设置
	-v 请将 /docker/v/nginx 修改为自己的路径

6、使用

到此为止,环境就配置完成了,如何使用呢?

  • 这里以 SpringCloud 微服务为例,每个微服务都有自己的端口,设有如下微服务
  • Student 服务:port=2001RequestMapping=/stu/**
  • Department 服务:port=2002RequestMapping=/dept/**
  • 微服务中的 NacosSentinelMySQL 服务器地址就可以直接使用 Linux 服务器地址 + 对应 docker 容器暴露的端口号了
  • 再在 nginx.confserver 块添加配置,令 /stu 转发到 2001 端口,/dept 转发到 2002 端口即可

server { ··· location ~ /stu { proxy_pass http://ip_addr:2001 } location ~ /dept { proxy_pass http://ip_addr:2002 } ··· }

7、附 Tomcat 配置

  • 拉取 Tomcat

docker pull tomcat

  • 启动 tomcat

docker run -d --name Tomcat -p 8080:8080 tomcat

  • mkdir /docker/v/tomcat
  • 复制配置文件、webapps

docker cp tomcat:/usr/local/tomcat/conf/tomcat-user.xml /docker/v/tomcat/tomcat-user.xml docker cp tomcat:/usr/local/tomcat/webapps.dist /docker/v/tomcat/webapps

  • 编辑 tomcat-user.xml,先检查文件权限并根据情况做出调整

<?xml version="1.0" encoding="UTF-8"?> <tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0"> <role rolename="manager-gui" /> <role rolename="manager-script" /> <role rolename="manager-status" /> <role rolename="manager-jmx" /> <user username="tomcat" password="root" roles="manager-gui,manager-script,manager-status,manager-jmx /> </tomcat-users>

  • 编辑 webapps/manager/META-INF/context.xml,先检查文件权限并根据情况做出调整

<?xml version="1.0" encoding="UTF-8"?> <Context antiResourceLocking="false" privileged="true" > < !-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -- > <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context>

  • 干掉第一个容器

docker stop Tomcat docker rm Tomcat

  • 创建新的容器

docker run -d\ -p 8080:8080\ -e TZ="Asia/Shanghai"\ --restart=always\ --name Tomcat\ --net cying\ --ip 192.168.32.8\ -v /etc/localtime:/etc/localtime:ro\ -v /docker/v/tomcat/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml\ -v /docker/v/tomcat/webapps:/usr/local/tomcat/webapps\ tomcat ------------------------- 请修改参数:--name、--net、--ip、-v 其中: --net 和 --ip 根据自定义网段来设置 -v 请将 /docker/v/tomcat 修改为自己的路径

最后配上效果图,可能还有一些不完善的地方,欢迎大家指点

docker部署springcloud的优缺点 docker部署springcloud微服务_linux_04