目录
一、docker-compose部署mysql
二、docker-compose部署nginx
三、docker-compose部署redis(含主从)
四、docker-compose部署rabbitmq(含主从)
一、docker-compose部署mysql
[root@harbor mysql_cluster]# tree
.
├── conf
│ └── my.cnf
├── init.sql
├── mysqldb
└── mysql.yaml
cat mysql.yaml
version: '3'
services:
mysql:
network_mode: "bridge"
environment:
MYSQL_ROOT_PASSWORD: "yourpassword"
MYSQL_USER: 'test'
MYSQL_PASS: 'yourpassword'
image: "mysql:5.7.36"
restart: always
volumes:
- "./mysqldb:/var/lib/mysql"
- "./conf/my.cnf:/etc/my.cnf"
#- "./init:/docker-entrypoint-initdb.d/"
ports:
- "13306:3306"
cat conf/my.cnf
[mysqld] user=mysql default-storage-engine=INNODB character-set-server=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8
cat init.sql
create database test; use test; create table user ( id int auto_increment primary key, username varchar(64) unique not null, email varchar(120) unique not null, password_hash varchar(128) not null, avatar varchar(128) not null ); insert into user values(1, "zhangsan","test12345@qq.com","passwd","avaterpath"); insert into user values(2, "lisi","12345test@qq.com","passwd","avaterpath"); create database test; use test; create table user ( id int auto_increment primary key, username varchar(64) unique not null, email varchar(120) unique not null, password_hash varchar(128) not null, avatar varchar(128) not null ); insert into user values(1, "zhangsan","test12345@qq.com","passwd","avaterpath"); insert into user values(2, "lisi","12345test@qq.com","passwd","avaterpath");
启动:docker-compose -f mysql.yaml up -d
二、docker-compose部署nginx
[root@harbor service]# tree nginx/
nginx/
├── cert
├── conf
│ └── nginx.conf
├── conf.d
├── docker-compose-nginx.yml
└── html
vim conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
stream {
server {
listen 8640;
proxy_pass ingress;
}
upstream ingress{
server 192.168.216.226:443;
}
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
client_max_body_size 500m;
keepalive_timeout 200;
gzip on;
gzip_vary on;
gzip_min_length 1k;
gzip_comp_level 4;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/javascript;
gzip_disable "MSIE [1-6].";
}
vim docker-compose-nginx.yml
version: '3.1'
services:
nginx:
image: nginx:1.21.6 # 镜像名称
container_name: nginx_lishanbin # 容器名字
restart: always # 开机自动重启
ports: # 端口号绑定(宿主机:容器内)
- '5880:80'
- '6443:443'
volumes: # 目录映射(宿主机:容器内)
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./conf.d:/etc/nginx/conf.d
- ./html:/usr/share/nginx/html
- ./cert:/etc/nginx/cert
三、docker-compose部署redis(含主从)
[root@harbor redis]# tree .
.
├── conf
│ └── redis.conf
├── data
│ ├── appendonly.aof
│ └── dump.rdb
└── redis.yaml
requirepass test@dbuser2018
appendonly yes
cat conf/redis.conf
requirepass test@dbuser2018 appendonly yes
cat redis.yaml
master:
image: redis:6.2.6
container_name: redis-master
restart: always
command: redis-server --port 6379 --requirepass test@dbuser2018 --appendonly yes
ports:
- 6379:6379
volumes:
- ./data:/data
- ./conf/redis.conf:/etc/redis/redis.conf:rw
slave1:
image: redis:6.2.6
container_name: redis-slave-1
restart: always
command: redis-server --slaveof 192.168.216.227 6379 --port 6380 --requirepass test@dbuser2018 --masterauth test@dbuser2018 --appendonly yes
ports:
- 6380:6380
volumes:
- ./data:/data
slave2:
image: redis:6.2.6
container_name: redis-slave-2
restart: always
command: redis-server --slaveof 192.168.216.227 6379 --port 6381 --requirepass test@dbuser2018 --masterauth test@dbuser2018 --appendonly yes
ports:
- 6381:6381
volumes:
- ./data:/data
四、docker-compose部署rabbitmq(含主从)
镜像选择:
选择rabbitmq:3-management是因为带有web管理功能的
如果是rabbit:3.7.8 这种版本 需要进入容器内部执行
docker exec -it rabbitmq bash
rabbitmq-plugins enable rabbitmq_management
[root@harbor rabbitmq]# tree . . ├── log ├── data └── rabbitmq.yaml
vim rabbitmq.yaml
version: '3'
services:
rabbitmq1:
image: rabbitmq:3.8.3-management
container_name: rabbitmq1
restart: always
hostname: rabbitmq1
extra_hosts:
- "rabbitmq1:192.168.216.227"
- "rabbitmq2:192.168.207.97"
ports:
- 4369:4369 #erlang发现口
- 25672:25672 #server间内部通信口
- 15672:15672 #管理界面ui端口
- 5672:5672 ##client端通信口
- 5671:5671
volumes:
- ./data:/var/lib/rabbitmq
- ./log:/var/log/rabbitmq/log"
#- /etc/hosts:/etc/hosts
- /etc/localtime:/etc/localtime
environment:
- RABBITMQ_DEFAULT_USER=root
- RABBITMQ_DEFAULT_PASS=root
- RABBITMQ_ERLANG_cookie=CURIOAPPLICATION
主从:各节点rabbitmq的存储方式,即节点1是disk,节点2和节点3都是ram
默认情况下,RabbitMQ 启动后是磁盘节点,如果想以内存节点方式加入,可以加 --ram 参数。
如果想要修改节点类型,可以使用命令:
# rabbitmqctl change_cluster_node_type disc(ram)
创建主从:
disk节点(节点1主节点)执行:
rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app
ram节点(节点2和节点3)执行:
rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster --ram rabbit@rabbitmq1 rabbitmqctl start_app
检查节点状态:
rabbitmqctl cluster_status



