Docker Compose容器化部署

一、下载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

参考博客:
erError downloading packages: docker-compose-plugin-2.27.1-1.el7.x86_64: Errno 256 No more mirrors_docker-compose-plugin-2.27.1-1 failed-CSDN博客e

二、使用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创建的所有容器启动成功。

三、后端项目打包部署

四、前端项目打包部署

相关推荐
辉的技术笔记40 分钟前
Dify 自部署为什么跑不动?6 层瓶颈诊断法教你定位
docker
SkyWalking中文站21 小时前
认识 Horizon UI · 6/17:Trace 探索器
运维·监控·自动化运维
程序员老赵1 天前
Docker 部署 Redmine:老牌开源项目管理部署实测记录
docker·开源·团队管理
程序员老赵1 天前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
火车叼位1 天前
写给初级开发者:SSL、SSH、HTTPS 与证书体系全解析
运维
小猿姐1 天前
唯品会大规模数据库云原生实践:基于 KubeBlocks 管理数千实例的统一运维之路
运维·elasticsearch·云原生
SkyWalking中文站2 天前
认识 Horizon UI · 5/17:3D 基础设施地图
运维·监控·自动化运维
SkyWalking中文站3 天前
认识 Horizon UI · 1/17:SkyWalking 新一代可观测性控制台
运维·前端·监控
雪梨酱QAQ3 天前
Kubeneters HA Cluster部署
运维
lichenyang4533 天前
Docker 学习笔记(五):Docker Compose,用一个 YAML 启动前端、后端和 MongoDB
docker