一、配置docker-compose.yml
vim ./pes/docker-compose
version: "3"
services:
weba:
container_name: web0
image: nginx:latest
#ports:
#- "80:80"
expose:
- 80
volumes:
- ./web/src/dist/:/usr/share/nginx/html/
webb:
container_name: web1
image: nginx:latest
#ports:
#- "80:80"
expose:
- 80
volumes:
- ./web/src/dist/:/usr/share/nginx/html/
webc:
container_name: web2
image: nginx:latest
#ports:
#- "80:80"
expose:
- 80
volumes:
- ./web/src/dist/:/usr/share/nginx/html/
javaa:
container_name: java0
build: ./java #这个java⽬录下必须要有Dockerfile
#ports:
#- "8080:8080"
expose:
- 8080
volumes:
- ./java/src/:/java/src/
javab:
container_name: java1
build: ./java #这个java⽬录下必须要有Dockerfile
#ports:
#- "8080:8080"
expose:
- 8080
volumes:
- ./java/src/:/java/src/
mysql:
container_name: mysql0
image: mysql:5.7.44
ports:
- "3306:3306"
expose:
- 3306
volumes:
- ./mysql/data/:/var/lib/mysql/
haproxy:
container_name: haproxy0
image: haproxy:latest
ports:
- "8888:8888"
- "5000:5000"
- "8080:8080"
volumes:
-
./haproxy/haproxy/haproxy.cfg:/usr/local/etc/haprox
y/haproxy.cfg
links:
- web0
- web1
- web2
- java0
- java1
二、配置haproxy.cfg
######## 监控界⾯配置 #################
listen admin_status
# 监控界⾯访问信息
bind 0.0.0.0:8888
mode http
# URI相对地址
stats uri /dbs
# 统计报告格式
stats realm Global\ statistics
# 登录账户信息
stats auth admin:123456
########frontend配置##############
######## 代理nginx服务 ###############
listen proxy-web
bind 0.0.0.0:5000
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 web0:80 check weight 1 maxconn 2000
server web1 web1:80 check weight 1 maxconn 2000
server web2 web2:80 check weight 1 maxconn 2000
#server MYSQL_3 192.168.130.102:3306 check
weight 1 maxconn 2000
# 使⽤keepalive检测死链
# option tcpka
#########################################
######## java的负载均衡配置 ###############
listen proxy-java
bind 0.0.0.0:8080
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 javaa java0:8080 check weight 1
maxconn 2000
server javab java1:8080 check weight 1
maxconn 2000
#server MYSQL_3 192.168.130.102:3306 check
weight 1 maxconn 2000
# 使⽤keepalive检测死链
# option tcpka
#########################################
三、配置Application.properties
spring.datasource.url=jdbc:mysql://192.168.71.10:33
06/project_exam_system
spring.datasource.username=zhangmin
spring.datasource.password=zhangmin
spring.datasource.driver-class
name=com.mysql.cj.jdbc.Driver
四、注意事项
1. web
1. 直接使⽤或者下载nginx:latest,如果你觉得下载速度太慢,可以⾃⼰配置⾮安全私有仓库(registy镜像,活着harbor都可以,)但是在调⽤奖项的时候(192.168.71.11/libary/nginx:latest)
2. nginx容器的资源⽂件默认在/usr/share/nginx/html
3. nginx容器的配置⽂件默认在/etc/nginx/nginx.conf
4. 有时候我们需要挂载配置⽂件和资源⽂件就需要挂载两个⽬录
volumes:
- ./web/nginx.conf:/etc/nginx/nginx.conf
- ./web/src/dist/:/usr/share/nginx/html/
5. expose⽤于容器向宿主暴露端⼝,保证宿主内部的容器能够相互访问
6. ports ⽤于将容器的端⼝映射到宿主的端⼝,容易重复,所以需要谨慎
7. Container_name 容器名称,不允许重复
8. image是要调⽤的镜像,如果在当前宿主上没有主机的镜像,会⾃动下载,如果没有指定标签的镜像,会默认从公⽹仓库下载
2. java
1. build 如果没有现成的镜像,需要我们⾃⼰创建新的进项,就需要我们写⼀个Dockerfile,build指向Dockerfile所在的⽬录
2. java的配置⽂件application.properties|yml
3. 在运维的时候,主要是配置的datasource
1. url
2. ip
3. 端⼝
4. driver ⼀般不需要修改,特殊情况是换了数据库软件
mysql sqlserver oracle
3. username
4. Password
5. 尽量把java的war,jar和配置放在⼀起,在执⾏启动命令的时候,需要将⽬录跳转到资源⽂件所有的⽬录,在启动的同时会读取配置⽂件(application.properties)
6. java有多个版本,需要开发⼈员提供版本号
1. Java17.0.12
2. ⾼版本兼容低版本,⼀般来说,22版本⼀般来说可以运⾏17开发的程序
3. 要求都在同⼀个⼤版本之内
3. mysql
1. ⽤于容器创建和销毁,所以持久化的数据,应该保存在宿主上
2. Mysql5.7.44的资源⽂件/var/lib/mysql
3. 在容器中也是可以做主从复制以及读写的分离的。(需要⼤家⾃⼰完成)
4. docker-compose的⽂件⽬录
[root@docker pes]# tree -L 2
.
"## docker-compose.yml
"## haproxy
$ %## haproxy.cfg
"## java
$ "## Dockerfile
$ "## jdk
$ "## src
$ %## start.sh
"## mysql
$ "## data
$ %## project_exam_system.sql
%## web
%## src*