使⽤
docker
部署
project-exam-system
1.
背景,在⼀台主机之内,实现容器的编排,发布考试系统
2.
环境准备
1. docker
1. vim /etc/docker/daemon.json
2. docker-compos
3.
普通的部署
1.
镜像
1.
前端:
nginx latest
服务
1.
拉取
nignx:latest
镜像
2.
测试
3.
上传前端项⽬
dist
4.
创建启动容器

5.
测试成功
6.
出现问题,在实现登录的时候,都实现后段异常,
原因后段还没后部署
7.
登录的时候请求的域名
bu.yuanyu.zhangmin,
我们是
hosts
域名劫持来实现
2.
后端的业务
jdk17 springboot
有点 不⽤单独部署
tomcat
,已经在
springboot
中内置
tomact
1.
准备拉取基础
centos
镜像
2. Docker run -it centos:latest /bin/bash
3. ctrl p q
4. jdk17
版本的⽂件
5.
项⽬资源
.war. .perpreties
6.
将在服务器上的
jaav
的资源⽂件上传到容器
1.
上传
jdk

2.
向容器上传为服务的项⽬⽂件

3.
向容器上传微服务的配置⽂件

4.
对已经传到容器的⽂件进⾏部署

5.
解压⽂件到指定的⽬录,并且跳过第⼀层⽬录

6.
测试启动微服务

7.
修改
appllcaiton.properties
⽂件
1. spring.datesource.url=jdbc:msyql://
你的主机
的
ip:3306/project_exam_system
8. ctrl p q
退出
9.
根据容器创建镜像

10.
查看镜像

11.
停⽤原来的容器

3.
移除原来的容器

4.
根据新建的镜像,创建容器

14. docker ps
查看容器的进程

15.
将
java
容器的终端附加到当前终端

16.
启动
springboot
微服务

17.
数据持久化业务
mysq 5.7.44
1.
拉取
mysql:5.7.44
docker pull mysql:5.7.44
2.
上传
mysql
⽂件
3.
执⾏
mysql
⽂件
mysql -uroot -proot <
project_exam_system.sql
4.
启动
mysql
容器,并且映射端⼝
docker run -itd -p3306:3306
mysql:5.7.44
5.
使⽤
exec
指令访问数据库管理界⾯

nmt
nginx
1.
下载镜像,启动镜像,将本地的
dist
项⽬的⽬录挂载在容器
的
/usr/share/nginx/html
2.
启动服务
3.
前后端分离的项⽬,并⾮所有的请求都是来⾃于同⼀个位置,
设置请求的时候还是需要在
hosts
⽂件中挟持域名
4.
域名是固定的,但是,域名可以绑定不同的
ip
mysql
1.
各个版本都有官⽅的镜像,直接下载
docker pull msyql:5.7.44
2.
启动容器的时候,挂载
data
⽬录,

3.
制作
data
的时候,顺⼿删除
auto.cnf
tomcat

制作
docker-compose.yml
⽂件,实现⼀键部署
步骤:
1.
启动
nginx

2.
启动
java
容器
3.
启动
mysql
配置⾼可⽤的项⽬
1.
先创建三个前段
nginx
容器
1.
端⼝不能映射
80

2.
现在在远程是⽆法访问
nginx
服务,⽽且现在也不希望外部
直接访问
nginx
,希望创建
nginx
服务的集群,这个集群被
haproxy
代理,创建三个
nginx
容器,创建⼀个
haproxy
服
务,⽽且
nginx
容器还需要指定名称,
web0 web1 web2
因为
如果没有名称,那么容器就⽆法被
haproxy --link
3.
启动
haproxy
容器
hap0
1.
拉取
haproxy
镜像

2.
配置




mode http
#
负载均衡算法
# static-rr
权重
, leastconn
最少连
接
, source
请求
IP,
轮询
roundrobin
balance roundrobin
#
⽇志格式
option tcplog
#
在
mysql
创建⼀个没有权限的
haproxy
⽤户,密码为空。
haproxy
⽤户
# create user 'haproxy'@'%'
identified by ''; FLUSH PRIVILEGES;
#option mysql-check user haproxy
#
这⾥是容器中的
IP
地址,由于配置的是
轮询
roundrobin
,
weight
权重其实没有⽣效
server web0 10.1.1.10:80 check
weight 1 maxconn 2000
server web1 10.1.1.10:81 check
weight 1 maxconn 2000
server web2 10.1.1.10:82 check
weight 1 maxconn 2000
#server MYSQL_3
192.168.130.102:3306 check weight 1
maxconn 2000
#
使⽤
keepalive
检测死链
# option tcpka
########################################
1.
在宿主机上安装了
haproxy
,配置,代理三个的
nginx
容器中的
web
服务,也是直接添加容器的
ip
地
址

2.
创建⼀个
haproxy
,将配置⽂件导⼊到容器,在容器
中启动
haproxy
,也是可以的

3.
实际的使⽤
haproxy
容器,只需要将配置⽂件挂载到
指定的⽬录就可以

3.
启动
4.
代理
java
服务



5. ab
压⼒测试
yum provides *bin/ab
yum -y install httpd-tools
Docker-compose
⾃动化部
署
1.
安装
docker
source docker.sh
2.
安装
pip
yum -y install python2-pip
3.
升级
pip
pip install --upgrade pip==20.3 -i
https://mirrors.aliyun.com/pypi/simple
4.
安装
docker-compose
pip install docker-compose -i
https://mirrors.aliyun.com/pypi/simple
5.
创建
pes
⽬录以及⼦⽬录
cd
mkdir -p pes/{msyql,java,web}
6.
在
pes
⽬录下创建并且编辑
dockerr-compose.yml
⽂件


7.
添加
web
服务

8. docker-compose
启动集群
cd pes
docker-compose up -d
9. docker-compose
暂停集群

10. docker-compose
移除容器

11. docker-compose
多开容器
