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

三、后端项目打包部署

四、前端项目打包部署

相关推荐
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS3 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
AI职业加油站3 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏3 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
玉&心3 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing3 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
-梅3 天前
linux(8) 软硬链接
linux·运维·服务器
赵文宇(温玉)3 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang3 天前
上传本地镜像到harbor中
docker·容器·持续部署
张洛闻Eren3 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github