1、安装 Linux 系统

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

2、安装 docker

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

3、远程连接

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

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

在这里插入图片描述

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

在这里插入图片描述

4、拉镜像

  • Nacos

    1
    docker pull nacos/nacos-server
  • Sentinel

    1
    docker pull bladex/sentinel-dashboard
  • MySQL

    1
    docker pull mysql
  • Nginx

    1
    docker pull nginx

5、开始搭建

5.1 启动 Docker

略,不同系统启动命令不同

5.2 自定义网段

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

在这里插入图片描述

5.2 Nacos

1
2
3
4
5
6
7
8
9
10
11
12
13
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

1
2
3
4
5
6
7
8
9
10
11
12
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

前期准备

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

my.conf 内容:

1
2
3
4
5
6
7
8
9
10
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

创建容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

前期准备

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

nginx.conf 内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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;

}

创建容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 服务器地址就可以直接使用对应 docker 容器的地址了

  • 再在 nginx.confserver 块添加配置,令 /stu 转发到 2001 端口,/dept 转发到 2002 端口即可

    1
    2
    3
    4
    5
    6
    7
    server {
    ···
    location ~ /stu {
    proxy_pass http://ip_addr:2001
    }
    ···
    }

7、附 Tomcat 配置

  • 拉取 Tomcat

    1
    docker pull tomcat
  • 启动 tomcat

    1
    docker run -d --name Tomcat -p 8080:8080 tomcat
  • mkdir /docker/v/tomcat

  • 复制配置文件、webapps

    1
    2
    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,先检查文件权限并根据情况做出调整

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    < ?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,先检查文件权限并根据情况做出调整

    1
    2
    3
    4
    5
    < ?xml version="1.0" encoding="UTF-8"?>
    <Context antiResourceLocking="false" privileged="true" >
    <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
    </Context>

  • 干掉第一个容器

    1
    2
    docker stop Tomcat
    docker rm Tomcat
  • 创建新的容器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    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 修改为自己的路径