使用 docker 一键部署前后端项目
这里我以开源项目ruoyi 的 vue 前后端为例,想要通过 docker 一键跑起来,需要对项目做部分调整。
修改 springboot yml 的配置
application.yml

 # redis 配置
redis:# 地址,host 是关键点,不能配置为 ip,应该配置的是docker 容器的服务名称,后面看# 对应本文下面的 docker-compose-yml 中,你就知道了!!!host: redis# 端口,默认为6379port: 6379# 密码password: 123456# 连接超时时间timeout: 10slettuce:pool:# 连接池中的最小空闲连接min-idle: 0# 连接池中的最大空闲连接max-idle: 8# 连接池的最大数据库连接数max-active: 8# #连接池最大阻塞等待时间(使用负值表示没有限制)max-wait: -1ms

application-dev.yml mysql 的 url 配置

# 注意这里写的是 db,没有写 ip 地址,同样是服务名称,对应 docker-compose-yml 中
url: jdbc:mysql://db:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8

后端修改好了之后 就直接打 jar 包吧,下面看 修改前端的配置,对于 ruoyi 这个 vue-cli 项目来说,需要修改 vue.conf.js 中的 devSever 节点中的 target

devServer: {host: '0.0.0.0',port: port,proxy: {// detail: https://cli.vuejs.org/config/#devserver-proxy[process.env.VUE_APP_BASE_API]: {# 这里需要注意,target 要配置为 后端容器的名称+端口 # 或者 docker-compose.yml 中 services下对于的服务名称+端口# target: `http://api:8080`, 或者# target: `http://ruoyi:8080`,// target: `http://localhost:8080`,target: `http://api:8080`,changeOrigin: true,pathRewrite: {['^' + process.env.VUE_APP_BASE_API]: ''}}},disableHostCheck: true},

前端项目中不用修改其他了,vue.conf.js 修改好了之后,直接 npm run build:prod 打包

mysql 和 nginx 此处我都挂载运行了,redis 没有特殊处理,你也可以将 redis 的数据文件进行挂载。

准备部署的机器上创建好如下的文件夹

# nginx
/home/nginx/html
/home/nginx/conf/nginx.conf
/home/nginx/logs
/home/nginx/conf.d# mysql
/home/mysql/data:/var/lib/mysql
/home/mysql/conf:/etc/mysql
/home/mysql/log:/var/log/mysql

创建 Dockerfile 并写入以下内容

# 指定基础镜像
FROM java:8
# 维护者信息
MAINTAINER  author_name "xxx@qq.com"RUN echo "-------------------- 后端 api 环境配置 --------------------"COPY ruoyi.jar /app.jar# 暴露8080端口
EXPOSE 8080
# 设置环境编码UTF-8
ENV LANG C.UTF-8

创建 docker-compose.yml 文件并写入以下内容

version: '3.6'
services:#指定服务名称db:#指定服务使用的镜像image: mysql:5.7#指定容器名称container_name: mysqlrestart: always#指定服务运行的端口ports:- "3307:3306"volumes:# 上面创建的文件夹,将启动的容器对应数据挂载在主机这些文件夹里- /home/mysql/data:/var/lib/mysql- /home/mysql/conf:/etc/mysql- /home/mysql/log:/var/log/mysql#指定容器的环境变量environment:#数据库密码- MYSQL_ROOT_PASSWORD=123456#创建的库- MYSQL_DATABASE=ruoyi#允许多IP连接数据库- MYSQL_ROOT_HOST=%redis:image: redis:6.2.2#指定容器名称container_name: redis1ports:- "6379:6379"api:container_name: ruoyirestart: always #build:context: ./dockerfile: ./Dockerfile#    working_dir: /appvolumes:- ./logs/:/logsports:- "8080:8080"#    command: mvn clean spring-boot:run -Dspring-boot-run.profiles=dev '-Dmaven.test.skip=true'command: java -jar app.jardepends_on:- db- redisnginx:image: nginxcontainer_name: nginx1restart: alwaysports:- "80:80"volumes:- /home/dist:/usr/share/nginx/html- /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf- /home/nginx/logs:/var/log/nginx- /home/nginx/conf.d:/etc/nginx/conf.ddepends_on:- api

/home/nginx/conf下创建好 nginx.conf 内容如下

user  nginx;
worker_processes  1;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}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;keepalive_timeout  65;#gzip  on;include /etc/nginx/conf.d/*.conf;
}

创建 /hoem/nginx/conf.d/default.conf 文件,写入以下内容

server {  listen       80;  server_name  localhost;  #charset koi8-r;  #access_log  /var/log/nginx/log/host.access.log  main;  location / {root   /usr/share/nginx/html;try_files $uri $uri/ /index.html;index  index.html index.htm;}location /prod-api/{proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# api需要和 docker-compose.yml 中 services 下的后端服务名称或者容器名称一致,proxy_pass http://api:8080/;}#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;  }  # proxy the PHP scripts to Apache listening on 127.0.0.1:80  #  #location ~ \.php$ {  #    proxy_pass   http://127.0.0.1;  #}  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  #  #location ~ \.php$ {  #    root           html;  #    fastcgi_pass   127.0.0.1:9000;  #    fastcgi_index  index.php;  #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;  #    include        fastcgi_params;  #}  # deny access to .htaccess files, if Apache's document root  # concurs with nginx's one  #  #location ~ /\.ht {  #    deny  all;  #}
}

另外 mysql 的配置需要修改一下,在/home/mysql/conf 下创建 my.cnf 添加如下内容

[mysqld]
character-set-server=utf8
# 让 mysql 忽略表的大小写,主要是因为ruoyi 这个项目里的定时任务表都是大写,linux 下 mysql 默认是对大小写敏感的。不修改会提示定时任务的几个表不存在
lower_case_table_names = 1

做好这些工作之后,让 Dockerfile,docker-compose.yml ruoyi.jar 在同一目录下,最后执行一条命令
docker-compose up -d 项目即可启动。

docker 一键部署前后端项目 ruoyi相关推荐

  1. Dockerfile + docker-compose 一键部署 前后端+中间件

    Docker部署 准备文件: 后端jar包.前端文件.数据库sql文件.Dockerfile.docker-compose.yml 先创建一个mydocker项目文件夹,里面放入 jar包,Docke ...

  2. linux下Nginx部署前后端项目

    Nginx 常用命令(Linux) cd/usr/local/nginx/sbin ./nginx //启动 ./nginx -s stop //停止 ./nginx -s quit //安全退出 . ...

  3. Docker环境部署PHP后端项目集群

    1. 搭建PHP项目环境 创建网络段 docker network create net1 拉取apache与php镜像 docker pull webdevops/php-apache:7.4 创建 ...

  4. weblogic部署前后端分离项目

    环境说明 序号 服务名称 版本信息 1 weblogic weblogic 12.2.1.3.0 2 jdk jdk-1.8.0_111 环境准备 (1)jdk安装(已安装请忽略) 将发布包下的ins ...

  5. 利用Docker一键部署若依前后端分离项目详细教程

    本文内容,主要介绍一下,在Linux服务器中如何利用Docker一键部署若依前后端分离项目. 若依前后端分离版本开源地址:https://gitee.com/y_project/RuoYi-Vue 目 ...

  6. ubantu20.04服务器使用docker以及docker-compose编排部署前后端分离个人博客项目(springboot+vue+mysql+redis)

    ubantu20.04使用docker部署前后端分离个人博客项目(springboot+vue+mysql+redis) 前言 本博客是基于springboot+vue+jwt+redis+mysql ...

  7. Docker部署前后端分离项目

    云主机 centos7 中Docker容器式部署前后端分离项目Django+Vue.js 前期准备: Docker安装Docker - CentOS Docker 软件包和依赖包已经包含在默认的 Ce ...

  8. 使用 Nginx 部署前后端分离项目,解决跨域问题

    前后端分离这个问题其实松哥和大家聊过很多了,上周松哥把自己的两个开源项目部署在服务器上以帮助大家可以快速在线预览(喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了 ...

  9. IDEA配置Docker一键部署SpringBoot项目(企业级做法)

    Docker一键部署SpringBoot项目 前言 一.开启Linux的Docker远程访问 1.1 安装vim工具: 1.2 修改`daemon.json`的配置: 1.3 加入配置: 1.4 重新 ...

最新文章

  1. 百度云网盘 360云盘 金山快盘 等 + Git GUI 实现代码版本管理-个人篇
  2. UOJ #268 BZOJ 4732 [清华集训2016]数据交互 (树链剖分、线段树)
  3. 20145231第四周学习笔记
  4. js实现椭圆轨迹_华为开发者大会2020隆重召开,亿健T10椭圆机荣耀参展
  5. Chrome/360极速/猎豹/枫树/浏览器去除视频网站广告利器插件——【切糕】广告视频屏蔽专家下载...
  6. vcpkg下载mysql库_VCpkg 开源库管理工具
  7. keil 5(C51)下载安装
  8. 关于晶圆介绍以及IGBT晶圆的应用
  9. css绘制星星闪烁,CSS3 闪烁的星星
  10. runtime Caller 方法再封装
  11. MFC picture控件加载透明png图片
  12. 树莓派中怎么更新python_树莓派升级python的具体步骤
  13. Generator cannot target libraries that have not been migrated to null-safety.
  14. java云闪付,第三方支付-银联云闪付开发教程
  15. lle算法c++语言,2015年计算机二级C++上机考前冲刺题(4)
  16. Mac系统显示已连接(可以打开qq)但是无法打开浏览器解决方案
  17. MyBatis-Plus Generator v3.5.1 最新代码自动生成器
  18. PS快速抠图、换背景,让抠图速度快…
  19. Vue 人资 实战篇七 员工管理上 封装通用的组件、formatter属性、过滤器的使用、树形结构、建立公共导入的页面路由、excel的导入和导出、
  20. 全面认识海思SDK及嵌入式层开发(4)

热门文章

  1. 学会了C语言/C++能做什么?让我来告诉你吧!
  2. JavaMail(三)——发送HTML格式带附件的邮件
  3. [SPI]SPI接口简介
  4. linux下挂载USB光驱和硬盘的方法
  5. 使用Hutool插入图片到Excel
  6. 1000卡路里计算器_Excel卡路里计数器
  7. vux 选择器_Picker 组件使用教程 - VUX 中文文档
  8. [转]window下使用SetUnhandledExceptionFilter捕获让程序的崩溃
  9. 记一次Spring AOP拦截处理CXF WebService的失败经历
  10. 白酒的浓度计算机方法,99%的人中过招,一杯白酒等于几瓶啤酒?科学的算方法来了!...