发布时间:2025-06-24 18:23:56 作者:北方职教升学中心 阅读量:059
因为如果没有名称,那么容器就无法被haproxy link到。启动容器的时候,挂载data目录
3、 haproxy用户
# create user 'haproxy'@'%' identified by ''; FLUSH PRIVILEGES;
#option mysql-check user haproxy
# 这里是容器中的IP地址,由于配置的是轮询roundrobin,weight 权重其实没有生效
# 修改域名为java域名,端口为java端口
server java0 java0:8080 check weight 1 maxconn 2000
server java1 java1:8080 check weight 1 maxconn 2000
server java2 java2:8080 check weight 1 maxconn 2000
#server MYSQL_3 192.168.130.102:3306 check weight 1 maxconn 2000
# 使用keepalive检测死链
# option tcpka
[root@docker ~]# docker run -itd --link web0 --link web1 --link web2 --link
java0 --link java1 --link java2 -p8080:8080 -p5000:5000 -p8888:8888 -v
/root/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy:latest
e5ea894c0f30988604cfd6fe5a48b9a69f14c2c3f2e373fe775c0554f37f19db
# 下载http-tools,使用ab测试承载量
[root@docker ~]# yum -y install http-tools
[root@docker ~]# ab -n 100 -c 10 http://10.0.0.7:5000/
3、使用/usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war启动,但是在启动这个任务时 一定要跳转到application.properties文件所在目录,因为在启动的同时,还需要加载applicaiton.properties
二、编辑docker-compose.yml文件,一键部署完整项目
新机子:
1)docker-compose环境准备
# 配置docker环境
source docker.sh
scp 10.0.0.7:/etc/docker/daemon.json /etc/docker/daemon.json
vim /etc/docker/daemon.json
{
"registry-mirrors" : [
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
systemctl start docker
# 安装pip(python包管理器)
yum -y install python2-pip
# 升级pip
pip install --upgrade pip==20.3 -i https://mirrors.aliyun.com/pypi/simple
# 安装docker-compose
[root@compose ~]# pip install docker-compose --ignore-installed requests -i
https://mirrors.aliyun.com/pypi/simple
2)使用compose构建自动化部署文件
# 创建项目目录
[root@compose ~]# mkdir -p pes/{java,mysql,web}
[root@compose ~]# tree pes/
pes/
├── java
├── mysql
└── web
3 directories, 0 files
[root@compose ~]# cd pes
# 在项目目录中创建docker-compoce.yml文件
[root@compose pes]# vim docker-compose.yml
version: "3"
services:
web:
container_name: web0
image: nginx:latest
ports:
- "80:80"
volumes:
- ./web/src/dist/:/usr/share/nginx/html/
expose:
- 80
restart: "always"
# mysql:
# container_name: mysql0
# image: mysql:5.7.44
# java:
# container_name: java0
# image: java:v0
[root@compose pes]# mkdir -p web/src/
[root@compose pes]# scp -r 10.0.0.7:/root/project_exam_system/web/dist
web/src/
[root@compose pes]# ls web/src/
dist
# 拉取nginx镜像
[root@compose pes]# docker pull nginx
Using default tag: latest
# 执行docker compose命令创建指定容器
[root@compose pes]# docker compose up -d
WARN[0000] /root/pes/docker-compose.yml: `version` is obsolete
[+] Running 1/1
✔ Container web0 Started
0.9s
# 查看容器是否正常创建启动
[root@compose pes]# docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
5a007ca2fdbe nginx:latest "/docker-entrypoint.…" About a minute ago
Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp web0
3)使用docker compose一次性创建多台完全一样的容器
# 查看docker-compose的帮助文档
[root@compose ~]# docker-compose --help
scale Set number of containers for a service
# 查看docker-compose scale的帮助文档
[root@compose ~]# docker-compose scale --help
Usage: scale [options] [SERVICE=NUM...]
# 一次性创建多台相同容器时,不能为容器启相同的名称,映射相同的端口,所以需要在yml文件中将这
两行注释掉
[root@compose pes]# vim docker-compose.yml
version: "3"
services:
web:
#container_name: web0
image: nginx:latest
#ports:
#- "80:80"
volumes:
- ./web/src/dist/:/usr/share/nginx/html/
expose:
- 80
restart: "always"
# 使用scale选项创建3台相同的web容器
[root@compose pes]# docker compose up --scale web=3 -d
WARN[0000] /root/pes/docker-compose.yml: `version` is obsolete
[+] Running 3/3
✔ Container pes-web-3 Started
0.8s
✔ Container pes-web-1 Started
0.5s
✔ Container pes-web-2 Started
1.1s
# 查看容器列表
[root@compose ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
dd63d63e1ced nginx:latest "/docker-entrypoint.…" 29 minutes ago Up 29
minutes 80/tcp pes_web_2
12edb14dfae7 nginx:latest "/docker-entrypoint.…" 29 minutes ago Up 29
minutes 80/tcp pes_web_1
89fa62180f85 nginx:latest "/docker-entrypoint.…" 29 minutes ago Up 29
minutes 80/tcp pes_web_3
# docker-compose暂停集群
[root@compose ~]# cd pes/
[root@compose pes]# docker-compose stop
/usr/lib/python2.7/site-packages/paramiko/transport.py:33:
CryptographyDeprecationWarning: Python 2 is no longer supported by the Python
core team. Support for it is now deprecated in cryptography, and will be
removed in the next release.
from cryptography.hazmat.backends import default_backend
Stopping pes-web-1 ... done
Stopping pes-web-3 ... done
Stopping pes-web-2 ... done
[root@compose pes]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# docker-compose移除集群
[root@compose pes]# docker-compose down
/usr/lib/python2.7/site-packages/paramiko/transport.py:33:
CryptographyDeprecationWarning: Python 2 is no longer supported by the Python
core team. Support for it is now deprecated in cryptography, and will be
removed in the next release.
from cryptography.hazmat.backends import default_backend
Removing pes-web-1 ... done
Removing pes-web-3 ... done
Removing pes-web-2 ... done
Removing network pes_default
[root@compose pes]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES