当前位置: 首页 > article >正文

docker-compose一键部署若依前后端分离版本

比如这里把文件放到/xin/docker/jiaoZ/的目录下,jar包和下面的配置文件都放在这个文件夹下。

注意要把jar端口改为你实际启动的,映射端口也可以改为你想要的。

这里的映射端口为:nginx监听80端口,jar在8620端口,mysql在3306端口,redis在6379端口。

Dockerfile

如果这里不安装字体,若依登录时的验证码会显示不出来!

# 使用适合Oracle JDK 8的基础镜像
FROM openjdk:8-jdk

# 安装字体
RUN apt-get update && apt-get install -y \
    fontconfig \
    fonts-dejavu \
    xfonts-100dpi \
    && rm -rf /var/lib/apt/lists/*

# 确保/app目录存在
RUN mkdir -p /app

# 添加jar包到容器
ADD wms-productV3.0.jar /app/wms-productV3.0.jar

# 设置工作目录
WORKDIR /app

# 设置环境变量,如有需要
# ENV ...

# 开放8620端口
EXPOSE 8620

# 运行jar包
CMD ["java", "-jar", "wms-productV3.0.jar"]

docker-compose.yml

version: '3.8'  # 指定 Docker Compose 文件版本

services:  # 定义应用程序由哪些服务组成

  mysql:  # MySQL 数据库服务
    image: mysql:8  # MySQL 服务使用的 Docker 镜像
    environment:  # 传递给容器的环境变量
      MYSQL_ROOT_PASSWORD: root  # 设置 MySQL 的 root 密码
      MYSQL_DATABASE: jung_wms  # 创建名为 jung_wms 的数据库
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password  # MySQL 服务器配置
    volumes:  # 将主机路径或命名卷挂载到容器中
      - ./mysql:/var/lib/mysql  # 将 MySQL 数据持久化到主机目录
      - ./mysql-init.sql:/docker-entrypoint-initdb.d/mysql-init.sql:ro  # 使用 SQL 脚本初始化数据库
      - ./my.cnf:/etc/mysql/conf.d/custom.cnf:ro  # 自定义 MySQL 配置文件
    ports:
      - "3306:3306"  # 在主机上公开 MySQL 的 3306 端口

  redis:  # Redis 服务
    image: redis  # Redis 服务使用的 Docker 镜像
    volumes:
      - ./redis:/data  # 将 Redis 数据持久化到主机目录
    ports:
      - "6379:6379"  # 在主机上公开 Redis 的 6379 端口

  nginx:  # Nginx 网络服务器服务
    image: nginx  # Nginx 服务使用的 Docker 镜像
    volumes:
      - ./nginx:/etc/nginx/conf.d  # 将主机的 nginx 配置目录映射到容器中
      - ./app.conf:/etc/nginx/conf.d/app.conf:ro  # 特定的 Nginx 应用配置文件
      - /xin/docker/jiaoZ/dist:/usr/share/nginx/html  # 将主机的前端文件映射到 Nginx 容器中
    ports:
      - "80:80"  # 在主机上公开 Nginx 的 80 端口

  app:  # 应用服务
    build:  # 构建 Docker 镜像的配置
      context: .  # Docker 构建上下文目录
      dockerfile: Dockerfile  # Dockerfile 文件名
    volumes:
      - ./app:/app  # 应用源代码卷
      - ./wms-productV3.0.jar:/app/wms-productV3.0.jar:ro  # 特定的应用 JAR 文件
    ports:
      - "8620:8620"  # 在主机上公开应用的 8620 端口
    depends_on:  # 指定服务之间的依赖关系
      - mysql
      - redis

app.conf 

server {
    listen 80;

   location / {
       root /usr/share/nginx/html;
       index index.html index.htm;
       try_files $uri $uri/ /index.html;
   }

    location /ars/ { # 确保这里有结束的斜杠
        proxy_pass http://app:8620/; # 这会将匹配到的/ars/替换为这里的斜杠/
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

my.cnf

关闭lmysql区分表名大小写。

[mysqld]
lower_case_table_names=1

mysql-init.sql

初始化的sql,比如这里创建jung_wms数据库

CREATE DATABASE IF NOT EXISTS jung_wms;

启动程序 

docker-compose up --build

发现启动后,因为app.jar启动的慢,nginx启动的快,所以nginx访问app时就访问不到,异常退出了,所以等jar包启动之后,手动启动一下nginx就可以了,下面是命令。

docker restart jiaoz-nginx-1

完。 


http://www.kler.cn/a/272818.html

相关文章:

  • AIGC时代:如何快速搞定Spring Boot+Vue全栈开发
  • Chapter1:初见C#
  • flutter在使用gradle时的加速
  • Maven 配置本地仓库
  • SQL BETWEEN 操作符
  • 算法竞赛(蓝桥杯)贪心算法1——数塔问题
  • Android Framework基础之C语言入门
  • 线程的通俗解释
  • SpringBoot(数据库操作 + druid监控功能)
  • 仰卧起坐计数,YOLOV8POSE
  • Qt篇——QChartView获取鼠标停留位置的数值
  • B140XW01 V8 +OZ9956B PDF
  • echarts实践总结(常用一):柱状图(特点:渐变色、点击缩放、左右滑动、悬浮展示样式)
  • 丘一丘正则表达式
  • Redis内存淘汰机制
  • 2024.3.14 ARM
  • 免费开源、支持自建服务的团队协作、个人学习文档管理系统
  • 8. 文字穿透效果
  • 【九】【算法分析与设计】双指针(3)
  • 蓝桥杯每日一题(BFS)
  • “代码不熄,创造不止:揭秘程序员为何让电脑永不停歇“
  • DM数据库(docker)
  • 【LeetCode每日一题】310. 最小高度树
  • 如何计算视频流需要的服务器带宽
  • 在AI创业热潮下,如何抓住AI赚钱机会,实现人生逆袭
  • 【兔子机器人】实现从初始状态到站立