Skip to content

backend

simplefanC edited this page May 12, 2024 · 6 revisions

后端部署

前言

下载本项目,进入到当前文件夹执行打包命令

git clone https://github.com/simplefanc/voj-deploy.git && cd voj-deploy/src/backend

当前文件夹为打包voj-backend镜像的相关文件,然后打包voj-backend(SpringBoot项目)成jar包也放到当前文件夹,之后执行以下命令进行打包成镜像

docker build -t voj-backend .

项目依赖于voj-redisvoj-nacosvoj-mysql等镜像成功启动,以及根据前面三个镜像的配置修改环境参数才可正常启动

docker-compose 启动

version: "3"
services:
  voj-backend:
    # image: registry.cn-shanghai.aliyuncs.com/simplefanc/voj_backend
    image: voj-backend
    container_name: voj-backend
    restart: always
    depends_on:
      - voj-redis
      - voj-mysql
      - voj-nacos
    volumes:
      - ./voj/file:/voj/file
      - ./voj/testcase:/voj/testcase
      - ./voj/log:/voj/log
    environment:
      - TZ=Asia/Shanghai
      - BACKEND_SERVER_PORT=6688
      - NACOS_URL=172.20.0.4:8848
      - NACOS_USERNAME=nacos # 登录 http://ip:8848/nacos 分布式配置中心与注册中心的后台的账号
      - NACOS_PASSWORD=nacos # 密码
      - JWT_TOKEN_SECRET=default # token加密秘钥 默认则生成32位随机密钥
      - JWT_TOKEN_EXPIRE=86400 # token过期时间默认为24小时 86400s
      - JWT_TOKEN_FRESH_EXPIRE=43200 # token默认12小时可自动刷新
      - JUDGE_TOKEN=default # 调用判题服务器的token 默认则生成32位随机密钥
      - MYSQL_HOST=172.20.0.3
      - MYSQL_PUBLIC_HOST=172.20.0.3 # 如果判题服务是分布式,请提供当前mysql所在服务器的公网ip
      - MYSQL_PORT=3306
      - MYSQL_DATABASE_NAME=voj
      - MYSQL_USERNAME=root
      - MYSQL_ROOT_PASSWORD=voj123456
      - EMAIL_SERVER_HOST=smtp.qq.com # 请使用邮件服务的域名或ip
      - EMAIL_SERVER_PORT=465 # 请使用邮件服务的端口号
      - EMAIL_USERNAME=your_email_username # 请使用对应邮箱账号
      - EMAIL_PASSWORD=your_email_password # 请使用对应邮箱密码
      - REDIS_HOST=172.20.0.2
      - REDIS_PORT=6379
      - OPEN_REMOTE_JUDGE=true # 是否开启对hdu和codeforces的虚拟判题
    ports:
      - 6688:6688
    networks:
      voj-network:
        ipv4_address: 172.20.0.5
        
  voj-redis:
    image: redis:5.0.9-alpine
    container_name: voj-redis
    restart: always
    volumes:
      - ./redis/data:/data
    networks:
      voj-network:
        ipv4_address: 172.20.0.2
    ports:
      - 6379:6379
    command: redis-server --appendonly yes

  voj-mysql:
    image: mysql:5.7
    container_name: voj-mysql
    restart: always
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/log:/var/log/mysql
      - ./mysql/conf:/etc/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=voj123456
      - TZ=Asia/Shanghai
    ports:
      - 3306:3306
    networks:
      voj-network:
        ipv4_address: 172.20.0.3

  voj-nacos:
    image: nacos/nacos-server:1.4.2
    container_name: voj-nacos
    restart: always
    depends_on:
      - voj-mysql
    environment:
      - JVM_XMX=384m
      - JVM_XMS=384m
      - JVM_XMN=192m
      - MODE=standalone
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=172.20.0.3
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=root
      - MYSQL_SERVICE_PASSWORD=voj123456 # 与上面数据库密码一致
      - MYSQL_SERVICE_DB_NAME=nacos_config
      - NACOS_AUTH_ENABLE=true # 开启鉴权
    ports:
      - 8848:8848
    networks:
      voj-network:
        ipv4_address: 172.20.0.4

networks:
  voj-network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.0.0/16

Clone this wiki locally