一、下载docker
详细安装内容可以参考CSDN博客:
Linux安装最新版Docker完整教程(建议收藏)_linux安装docker教程-CSDN博客
如果出现错误:Error downloading packages: docker-compose-plugin-2.27.1-1.el7.x86_64: [Errno 256] No more mirrors
二、使用docker compose编写yml文件创建所需的所有组件
1、编写docker-compose文件
bash
version: '3.8'
networks:
app-network:
driver: bridge
volumes:
mysql-data:
redis-data:
mongodb-data:
services:
mysql:
image: mysql:8.0
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: "bdu2022"
MYSQL_DATABASE: "ry"
TZ: Asia/Shanghai
ports:
- "3306:3306"
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf
command: --default-authentication-plugin=mysql_native_password
networks:
- app-network
redis:
image: redis:7.0
container_name: app-redis
restart: always
ports:
- "6379:6379"
volumes:
- ./redis/data:/data
- ./redis/conf/redis.conf:/etc/redis/redis.conf
command: redis-server /etc/redis/redis.conf --appendonly yes
networks:
- app-network
mongodb:
image: mongo:6.0
container_name: app-mongodb
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: "root"
MONGO_INITDB_ROOT_PASSWORD: "bdu2022"
TZ: Asia/Shanghai
ports:
- "27017:27017"
volumes:
- ./mongodb/data:/data/db
networks:
- app-network
nginx:
image: nginx:1.24
container_name: app-nginx
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/conf/conf.d:/etc/nginx/conf.d
- ./nginx/logs:/var/log/nginx
- ./nginx/html:/usr/share/nginx/html
depends_on:
- mysql
- redis
networks:
- app-network
2、配置各组件的自定义配置
MySQL 配置
解决中文乱码、连接数等问题:
bash
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=1000
default-time-zone = '+8:00'
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
Redis 配置
开启持久化、设置密码、限制访问:
bash
# 绑定地址(容器内无需绑定宿主机IP,注释掉)
# bind 127.0.0.1
protected-mode no # 容器网络下关闭保护模式
port 6379
requirepass "你的Redis密码" # 设置密码,必加!
timeout 300
# 开启RDB持久化(默认)
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data
# 开启AOF持久化(可选,更高可靠性)
appendonly yes
appendfilename "appendonly.aof"
Nginx 配置(nginx.conf)
bash
# main全局块
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
# 必选的events区块(解决核心错误)
events {
worker_connections 1024;
use epoll;
}
# http块
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# 包含子配置
include /etc/nginx/conf.d/*.conf;
}
3、启动所有服务
bash
# 后台启动所有服务(-d=detach)
docker-compose up -d
# 查看容器状态(正常应为Up)
docker-compose ps
4、验证各服务可用性
MySQL

Redis

MongoDB

Nginx

至此docker创建的所有容器启动成功。