docker compose完成简单项目部署

1. 项目环境

centos7 + docker + mysql + redis + ruoyi项目

ruoyi项目链接:https://gitee.com/y_project/RuoYi-Vue.git

2. 进行项目前后端代码打包

后端打包:

修改mysql连接的相关配置文件 RuoYi-Vue/ruoyi-admin/src/main/resources/application-druid.yml

修改redis连接的相关配置文件 RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml

使用maven打包(这里使用容器目录挂载方式进行打包)

cd RuoYi-Vue
docker run -it --rm -v .:/opt/app -v /root/.m2:/root/.m2 -w /opt/app maven:3.8.8-sapmachine-11 mvn package

前端打包:

使用node打包(这里使用容器目录挂载方式进行打包)

cd ruoyi-ui

cd ruoyi-ui
docker run -it --rm -v .:/opt/app -w /opt/app node:18.20.3-alpine3.20 /bin/sh -c "npm install  --registry http://registry.npmmirror.com && npm run build:prod"

3. docker compose来构建服务

目录层级如下

将打包好的jar包放在java目录下用于构建镜像

将打包好的dist前端代码放到nginx中来构建镜像

sql目录用于存放用于导入的sql数据

database进行mysql数据目录的映射

./java/

dockerfile

FROM java:8u111-jdk
COPY . /opt/app
WORKDIR /opt/app
COPY start.sh /
CMD sh /start.sh

java.sh

sleep 10

java -jar ruoyi-admin.jar

等待10秒是因为Java构建镜像需要关联mysql,需等待mysql镜像构建完成

./nginx/

nginx.conf

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    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;
    charset utf-8;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    server {
        listen       80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /usr/share/nginx/dist;
            try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
    
        location /prod-api/{
          proxy_pass http://java.host:8080/; #注意这里的写法
          proxy_set_header Host $http_host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
    
    }

}

dockerfile

FROM nginx:1.16.1

COPY ./nginx.conf /etc/nginx/nginx.conf

COPY ./dist /usr/share/nginx/dist

EXPOSE 80

docker-compose.yml文件

# 指定服务
services:
  nginx:
    # nginx镜像需要构建,将代码和配置文件拷贝进去
    build:
      context: ./nginx
    ports:
      - "80:80"
    links:
      - java:java.host
    depends_on:
      - java

  java:
    build:
      context: ./java
    links:
      - redis:redis.host
      - database:mysql.host
    depends_on:
      - database
      - redis

  redis:
    image: redis
    
  database:
    image: mysql:5.7
    container_name: mysql
    volumes:
      # mysql官方镜像的功能,将sql文件挂载到这个目录下,会自动进行导入操作。
      - ./sql:/docker-entrypoint-initdb.d
      - ./database:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=ry-vue
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci

4. 启动docker compose

docker compose up

构建完成后出现下面现象,ruoyi项目就启动成功了,访问本机ip的80端口就行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/665482.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Scroll 上的明星项目Pencils Protocol ,缘何被严重低估?

近日,完成品牌升级的 Pencils Prtocol 结束了 Season 2 并无缝开启了 Season 3,在 Season 3 中,用户可以通过质押系列资产包括 $ETH、$USDT、$USDC、$STONE 、$wrsETH、$pufETH 等来获得可观收益,并获得包括 Scroll Marks、 Penci…

深入理解flask规则构建与动态变量应用

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、Flask规则基础 1. 静态规则与动态规则 2. 规则语法与结构 三、动态变量应用…

chrome谷歌浏览器开启Gemini Nano模型

前提 确保您的操作系统语言设置为英语(美国) 可能还需要将 Chrome 浏览器的语言更改为英语(美国)。 下载dev或Canary版本Chrome Chrome Canary Chrome Dev 注意:确认您的版本高于 127.0.6512.0。 其中一个Chrome版本不行就切换另外一个版本 绕过性能检查 Tab输入: …

【高校科研前沿】南大王栋、吴吉春教授团队在深度学习助力水库生态调度和优化管理方面取得新进展,成果以博士生邱如健为一作发表于水环境领域国际权威期刊

1.文章简介 论文名称:Integration of deep learning and improved multi-objective algorithm to optimize reservoir operation for balancing human and downstream ecological needs 第一作者及单位:邱如健(博士生 南京大学)…

电商物流查询解决方案助力提升消费者体验

截至2023年12月,中国网络购物用户规模达9.15亿人,占网民整体的83.8%。这一庞大的数字不仅展现了电子商务的蓬勃发展,也标志着数字零售企业营销战略的转变——从以产品和流量为核心,到用户为王的新阶段。因此,提升消费者…

【Mac】 Infuse for Mac(多媒体播放器) v7.7.6软件介绍和安装

软件介绍 Infuse Pro是一款非常强大的视频播放器,它被誉为 Apple TV上最强的播放器。它支持广泛的视频格式和解码器,包括DTS、DTS-HD、AC3、E-AC3等高清视频的音频播放任务。此外,Infuse Pro还支持所有常见的高清格式。 Infuse Pro的特点之…

MySQL基础索引知识【索引创建删除 | MyISAM InnoDB引擎原理认识】

博客主页:花果山~程序猿-CSDN博客 文章分栏:MySQL之旅_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,索引用…

java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader

问题描述:在maven项目中,给SAXReader创建实例,启动tomcat服务器后报异常java.lang.NoClassDefFoundError: org/dom4j/io/SAXReader。我在pom文件中是引入了dom4j依赖得,但是不知道为什么在上传到web时就找不到了 解决办法&#x…

数据结构与算法 :数据结构绪论,时间和空间复杂度 推导大O阶

各位少年 大家好 我是博主那一脸阳光,今天开始给大家分享数据结构,由于我个人当初学的时候是自学,并没有看培训机构的视频 所以接下来我分享的数据结构的内容,源头来自一本书叫做大话数据结构。顺便一提为了方面大家理解&#xff…

信息学奥赛初赛天天练-17-阅读理解-浮点数精准输出与海伦公式的巧妙应用

PDF文档公众号回复关键字:20240531 1 2023 CSP-J 阅读程序1 阅读程序(程序输入不超过数组成字符串定义的范围:判断题正确填√,错误填;除特殊说明外,判断题1.5分,选择题3分,共计40分&#xff0…

二叉树的顺序实现-堆

一、什么是堆 在数据结构中,堆(Heap)是一种特殊的树形数据结构,用数组存储,通常被用来实现优先队列。 堆具有以下特点: 堆是一棵完全二叉树(Complete Binary Tree),即…

#centos7搭建php8+nginx环境#

场景:为了实现上传的pdf文件转成png图片,需要搭建一个php8nginx的运行环境,最后安装imagic扩展 安装顺序 php-> linux-> imagemagick -> ghostscript -> imagick 一:安装phpnginx环境 1、安装remi扩展源 remi源是Remi repository是包含最新…

Superset二次开发之更新 SECRET_KEY

SECRET_KEY 的作用 加密和签名:SECRET_KEY用于对敏感数据(如会话、cookie、CSRF令牌)进行加密和签名,防止数据被篡改。安全性:确保应用的安全性,防止跨站请求伪造(CSRF)攻击和会话劫持等安全问题。如何生成 SECRET_KEY openssl rand -base64 42 配置 SECRET_KEY 在sup…

linux开发之设备树六、linux下pinctrl子系统管理设置pin管脚的复用功能(一般原厂提供)

客户端的编写格式是固定的,不管哪家原厂的处理器,格式都是一样的 对于服务端部分是原厂提供,各个芯片肯定就不一样了,主要在于编写的格式不同 pinctrl客户端写法 使用pinctrl设置管脚复用 在kernel/arch/arm64/boot/dts/rockchi…

六一见!|Post Microsoft Build and AI Day 上海开发者日

编辑/排版:Alan Wang 大小朋友明天见! 6月1日,Microsoft Azure & Microsoft Reactor 面向大小朋友特别推出六一特辑,「Post Microsoft Build and AI Day 上海开发者日」 探讨 Microsoft Build 2024 带来的最新发布&#xff0…

Java常用API(三)

一、Arrays类 1.定义 Arrays是一个用于操作数组的工具类。 2.常用方法 1.toString方法 public class Demo {public static void main(String[] args) {//toString 将数组变成字符串int[] arr {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};System.out.println(Arrays.toString(arr));…

绿色之国斯洛文尼亚的必游景点

斯洛文尼亚拥有多样化的景观,本身就是一个十分吸引人的地方。它是世界上第一个被宣布为绿色旅游目的地的国家。这里除了有优越特殊的自然特色外,还有被联合国教科文组织列为世界遗产的保护区,以及关于爱情、贵族、盐和地下神话的惊奇故事。 世…

ABB机器人碰撞检测灵敏度设置

机器人的碰撞灵敏度是指机器人对碰撞事件的识别和反应能力。碰撞灵敏度取决于机器人的感知和控制系统以及其硬件结构。控制系统则负责根据感知系统的反馈信息,对机器人进行相应的控制和调整,以减少或避免碰撞。控制系统可以根据碰撞的严重程度来判断机器…

8-异常与错误

8-异常与错误 1、简介2、异常处理2.1 抛出异常2.2 捕获异常2.3 匹配顺序 3、异常说明4、构造函数中的异常5、析构函数中的异常6、标准库异常 1、简介 在程序编码过程中难免会出现错误,主要有:语法错误、逻辑错误、功能错误等,当我们面对以上…