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

相关推荐
九河云1 小时前
物联网赋能玻璃制造业:实现设备智能管理与生产协同
科技·物联网·重构·云计算·制造
诡异森林。1 小时前
Docker--Docker网络原理
网络·docker·容器
ALex_zry1 小时前
Docker Macvlan网络配置实战:解决“network already exists“错误
网络·docker·php
IT小辉同学1 小时前
Docker如何更换镜像源提高拉取速度
spring cloud·docker·eureka
24k小善1 小时前
Flink TaskManager详解
java·大数据·flink·云计算
matrixlzp2 小时前
K8S Service 原理、案例
云原生·容器·kubernetes
Johny_Zhao2 小时前
MySQL 高可用集群搭建部署
linux·人工智能·mysql·信息安全·云计算·shell·yum源·系统运维·itsm
GnixAij3 小时前
Docker SSH端口转发
docker·ssh
angushine3 小时前
让Docker端口映射受Firewall管理而非iptables
运维·docker·容器
知识分享3 小时前
虚拟化技术的起源与发展历程
云计算