云计算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*

相关推荐
catoop27 分钟前
K8s 无头服务(Headless Service)
云原生·容器·kubernetes
阿里嘎多学长44 分钟前
docker怎么部署高斯数据库
运维·数据库·docker·容器
小峰编程1 小时前
独一无二,万字详谈——Linux之文件管理
linux·运维·服务器·云原生·云计算·ai原生
明 庭1 小时前
Ubuntu下通过Docker部署Caddy服务器
服务器·ubuntu·docker
G_whang2 小时前
windos 安装docker
运维·docker·容器
Mitch3113 小时前
【漏洞复现】CVE-2021-45788 SQL Injection
sql·web安全·docker·prometheus·metersphere
运维小文3 小时前
K8S中的PV、PVC介绍和使用
docker·云原生·容器·kubernetes·存储
CYX_cheng3 小时前
Docker挂载
docker
終不似少年遊*3 小时前
华为云计算HCIE笔记04
网络·华为云·云计算·学习笔记·hcie·认证·数据中心
ζั͡山 ั͡有扶苏 ั͡✾3 小时前
Kubeadm+Containerd部署k8s(v1.28.2)集群(非高可用版)
云原生·容器·kubernetes