云计算42——使⽤docker部署project-exam-system(续2)

一、配置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

  2. 直接使⽤或者下载nginx:latest,如果你觉得下载速度太慢,可以⾃⼰配置⾮安全私有仓库(registy镜像,活着harbor都可以,)但是在调⽤奖项的时候(192.168.71.11/libary/nginx:latest)

  3. nginx容器的资源⽂件默认在/usr/share/nginx/html

  4. nginx容器的配置⽂件默认在/etc/nginx/nginx.conf

  5. 有时候我们需要挂载配置⽂件和资源⽂件就需要挂载两个⽬录

volumes:

  • ./web/nginx.conf:/etc/nginx/nginx.conf

  • ./web/src/dist/:/usr/share/nginx/html/

  1. expose⽤于容器向宿主暴露端⼝,保证宿主内部的容器能够相互访问

  2. ports ⽤于将容器的端⼝映射到宿主的端⼝,容易重复,所以需要谨慎

  3. Container_name 容器名称,不允许重复

  4. image是要调⽤的镜像,如果在当前宿主上没有主机的镜像,会⾃动下载,如果没有指定标签的镜像,会默认从公⽹仓库下载

  5. java

  6. build 如果没有现成的镜像,需要我们⾃⼰创建新的进项,就需要我们写⼀个Dockerfile,build指向Dockerfile所在的⽬录

  7. java的配置⽂件application.properties|yml

  8. 在运维的时候,主要是配置的datasource

  9. url

  10. ip

  11. 端⼝

  12. driver ⼀般不需要修改,特殊情况是换了数据库软件

mysql sqlserver oracle

  1. username

  2. Password

  3. 尽量把java的war,jar和配置放在⼀起,在执⾏启动命令的时候,需要将⽬录跳转到资源⽂件所有的⽬录,在启动的同时会读取配置⽂件(application.properties)

  4. java有多个版本,需要开发⼈员提供版本号

  5. Java17.0.12

  6. ⾼版本兼容低版本,⼀般来说,22版本⼀般来说可以运⾏17开发的程序

  7. 要求都在同⼀个⼤版本之内

  8. mysql

  9. ⽤于容器创建和销毁,所以持久化的数据,应该保存在宿主上

  10. Mysql5.7.44的资源⽂件/var/lib/mysql

  11. 在容器中也是可以做主从复制以及读写的分离的。(需要⼤家⾃⼰完成)

  12. 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\*

相关推荐
MetaverseMan10 分钟前
GitHub Actions打包容器,推送 AWS ECR 并使 EKS 自动拉取以完成发版部署
云计算·aws
ldj202040 分钟前
Docker的docker-compose类比Spring的ApplicationContext
spring·docker
ldj20201 小时前
docker 自定义网桥作用
docker·容器
java叶新东老师1 小时前
k8s常用命令
云原生·容器·kubernetes
土豆丶杨3 小时前
centos 配置docker
docker·eureka·centos
杰哥的狗3 小时前
nacos连接失败,启动失败常见问题
linux·docker
DarkAthena4 小时前
【GaussDB】构建一个GaussDB的Docker镜像
数据库·docker·gaussdb
运维成长记7 小时前
关于linux运维 出现高频的模块认知
运维·职场和发展·云计算
张火火isgudi7 小时前
CentOS8 使用 Docker 搭建 Jellyfin 家庭影音服务器
服务器·docker·容器
qq_447705319 小时前
宝塔通过docker部署JupyterHub指南【常见错误处理】
运维·docker·容器