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

三、后端项目打包部署

四、前端项目打包部署

相关推荐
Yeats_Liao2 小时前
评估体系构建:基于自动化指标与人工打分的双重验证
运维·人工智能·深度学习·算法·机器学习·自动化
小Pawn爷2 小时前
4.镜像仓库
docker
爱吃生蚝的于勒2 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
文艺理科生Owen2 小时前
Nginx 路径映射深度解析:从本地开发到生产交付的底层哲学
运维·nginx
期待のcode3 小时前
Redis的主从复制与集群
运维·服务器·redis
江湖有缘4 小时前
零基础入门:使用 Docker 快速部署 Organizr 个人主页
java·服务器·docker
wangjialelele4 小时前
Linux下的IO操作以及ext系列文件系统
linux·运维·服务器·c语言·c++·个人开发
广州中轴线4 小时前
OpenStack on Kubernetes 生产部署实战(十三)
容器·kubernetes·openstack
HypoxiaDream4 小时前
LINUX-Ext系列⽂件系统
linux·运维·服务器
小毛驴8504 小时前
Linux curl 命令用法
linux·运维·chrome