iView+SpringBoot 在 Docker 内构建工作流案例

本贴最后更新于 2149 天前,其中的信息可能已经沧海桑田

前后端分离的情况下,使用目前非常流行的 Vue 作为前端框架,SpringBoot 作为后端框架,再利用 iView 的 Steps 组件和 Docker 容器技术,构建一个基础的工作流案例。

前言

先上案例源代码: liumapp/file-workflow

前端项目在 flow-ui 下,后端项目在 flow-service 下。

利用 Docker-compose 了将后端项目和前端项目部署在 Docker 下,因为 Vue 单独运行需要 nodejs 环境支持,所以在 Docker 下额外添加了 Nginx 进行前端项目的支持。

Nginx 的配置文件和日志及 www 目录部署在 nginx 目录下。

环境配置

直接上 docker-compose.yml 代码:

version: '2'

services:
  flow-service:
	container_name: flow-service
	restart: always
	image: liumapp/flow-service:v1.0.0
	ports:
	  - 2020:2020
	volumes:
	  - ./flow-service/pic:/pic
	networks:
	  - flow-net

liumapp/flow-service:v1.0.0 需要从 flow-service 下,利用 mvn 编译后生成,不能直接从 docker hub 中拉取,所以需要先运行./build-image.sh 安装镜像。

并且在 docker-compose down 之后,mvn 编译生成的 docker image 也不会自动删除,所以需要运行./rm-image.sh 进行手动删除。

  nginx:
	container_name: nginx
	restart: always
	image: nginx:1.13
	ports:
	  - 80:80
	  - 443:443
	volumes:
	  - ./nginx/conf/vhosts:/etc/nginx/conf.d
	  - ./nginx/logs:/var/log/nginx
	  - ./nginx/www/:/var/www/
	networks:
	  - flow-net
	  

配置 Nginx,并将 flow-ui 下的 vue 项目在 npm run build 之后,将 dist 下的内容拷贝到./nginx/www/flowui 下。

networks:
  flow-net:
	driver: bridge      

配置 docker 容器内的网络。

后端

后端代码部署在/flow-service 下,是一个标准的 springboot web 项目。

需要注意一点,前端上传的图像、文件信息是存放在/pic 下,但是这个/pic 目录,是表示 docker 容器内的 pic 目录,这个目录利用了 volumes 与./flow-service/pic 建立了映射关系。

所以前端上传的图片实际是存放在./flow-service/pic 下。

前端

前端代码部署在/flow-ui 下,是一个标准的 vue2.0 项目。

与后端交互的接口配置在/src/libs/util.js 下。

需要注意一点,如果对 flow-ui 进行了改动,重新编译后,如果需要在 docker 下运行最新的效果,需要将编译好的 dist 目录下的文件 copy 到/nginx/www/flowui 下。

如果不希望让前端项目在 docker 下运行,直接在宿主机的 nodejs 环境下启动也是可以的,并不需要做额外的改动,只需要在 docker-compose.yml 下,将 nginx 的相关配置注释掉即可(事实上不在意 80 端口被占用的话,不注释也是可以的)。

结尾

项目运行的效果,及源码都非常简单,在项目的 README 下都有直观的体现。

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 285 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    261 引用 • 662 回帖
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    476 引用 • 899 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...