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

三、后端项目打包部署

四、前端项目打包部署

相关推荐
Snower_20221 小时前
CentOS 7 搭建 SVN 服务器(精简版教程)
linux·运维·服务器·svn·centos
UP_Continue2 小时前
Linux--OS和认识进程
linux·运维·服务器
IT摆渡者2 小时前
Rocky Linux 10.1中找不到传统的 /etc/sysconfig/network-scripts 目录是正常现象。
linux·运维·服务器·网络·经验分享
无小道2 小时前
基于epoll的单进程Reactor服务器
运维·服务器·c++·网络编程·reactor·epoll
Justin_192 小时前
K8s常见问题(5)
云原生·容器·kubernetes
Thomas21432 小时前
jupyterhub on k8s jupyter总是无响应
jupyter·容器·kubernetes
qq_395716172 小时前
服务器加硬盘应该用 RAID 几好?
运维·服务器
weixin_462446232 小时前
ubuntu / kali 将 /dev/sdb1 安全挂载为 /home 的完整实战指南(避坑版)
运维·安全·ubuntu
线束线缆组件品替网2 小时前
服务器高速互连测试中的 CableMAX 高速线缆实践
运维·服务器·人工智能·自动化·硬件工程·材料工程