Linux + Docker 部署 SpringCloud 微服务

1、安装 Linux 系统

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

2、安装 docker

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

3、远程连接

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

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

在这里插入图片描述

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

在这里插入图片描述

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 #查看当前已有网段

在这里插入图片描述

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 修改为自己的路径

最后配上效果图,可能还有一些不完善的地方,欢迎大家指点
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值