1、构建dockerfile文件

1.1创建文件夹和目录(如下)

在这里插入图片描述

1.2构建Dockerfile文件

在这里插入图片描述

2、创建文件夹和准备文件资源

在这里插入图片描述在这里插入图片描述
把nginx配置文件放conf.d文件夹下
配置内容如下:

server {
    listen       80;
    server_name  localhost;
    client_max_body_size 1024m;  # 允许最大 1GB 的请求体(根据需求调整)
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    location /prod-api/  {
    proxy_pass http://ruoyi-system:8081/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

 
}

在这里插入图片描述在这里插入图片描述
将若依的初始化sql放在initsql文件夹下
在这里插入图片描述
打包前端代码为dist放在nginx目录下
在这里插入图片描述

3、构建docker-compose.yml文件

内容如下:

services:
  # MySQL数据库服务
  mysql:
    image: mysql:5.7
    container_name: ruoyi-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root  # 根用户密码
      MYSQL_DATABASE: ry-vue              # 初始化数据库名
      MYSQL_USER: ruoyi                # 应用用户名
      MYSQL_PASSWORD: root        # 应用用户密码
      TZ: Asia/Shanghai                  # 时区设置
    ports:
      - "33061:3306"
    volumes:
      - ./mysql/mysql-data:/var/lib/mysql        # 数据持久化
      - ./mysql/initsql:/docker-entrypoint-initdb.d  # 初始化脚本(可选)
    networks:
      - ruoyi-network
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"]
      interval: 10s
      timeout: 5s
      retries: 5

  # Redis缓存服务
  redis:
    image: redis:6.2-alpine
    container_name: ruoyi-redis
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - ./redis/redis-data:/data                 # 数据持久化
    networks:
      - ruoyi-network
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

  # SpringBoot应用服务
  ruoyisystem:
    build:
      context: ./             # SpringBoot项目根目录
      dockerfile: Dockerfile             # Dockerfile路径
    container_name: ruoyi-system
    restart: always
    depends_on:
      mysql:
        condition: service_healthy
      redis:
        condition: service_healthy
    environment:
      #SPRING_PROFILES_ACTIVE: prod       # 激活的配置文件
      SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/ry-vue?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: root
      SPRING_REDIS_HOST: redis
      SPRING_REDIS_PORT: 6379
      TZ: Asia/Shanghai
    networks:
      - ruoyi-network
    ports:
      - "8081:8081"                           

  # Nginx服务 - 反向代理
  nginx:
    image: nginx:1.21-alpine
    container_name: ruoyi-nginx
    restart: always
    ports:
      - "8090:80"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d  # Nginx配置文件
      - ./nginx/html:/usr/share/nginx/html  # 静态资源
      - ./nginx/nginx-logs:/var/log/nginx         # 日志持久化
    depends_on:
      - ruoyisystem
    networks:
      - ruoyi-network

# 自定义网络
networks:
  ruoyi-network:
    driver: bridge

4、安装docker和compose

  安装docker我就不赘述了,自己网上找教程。

5、一键启动和停止项目

上传整个文件夹到服务器。
进入docker-compose.yml文件所在目录。执行命令:
一键启动:docker compose up -d
一键关闭: docker compose down

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐