JEECG容器化部署
JEECG代码中有一个Dockerfile,基本思路是以CentOS为基础镜像,在其中安装了nginx、jdk、mysql和redis,将编译出来的前端文件拷贝至nginx的指定目录,后端的jar文件放至根目录,并生成nginx的配置文件和脚本启动文件,在脚本启动文件中启动redis、nginx和java -jar的后端服务,这篇文章将MySQL和Redis拿出来,作为容器化部署的一种粗糙的解决方式。
为何不使用Alpine
大概率是因为验证码这样的东西需要sun.awt相应的支持,alpine下的OpenJDK的JRE无法支持,详细可参看:
- https://liumiaocn.blog.csdn.net/article/details/106557551
步骤1: 启动Redis
执行命令:docker run -d --name redis -p 6379:6379 -d redis:6.0.4
liumiaocn:jeecg liumiao$ docker run -d --name redis -p 6379:6379 -d redis:6.0.4
Unable to find image 'redis:6.0.4' locally
6.0.4: Pulling from library/redis
Digest: sha256:ec277acf143340fa338f0b1a9b2f23632335d2096940d8e754474e21476eae32
Status: Downloaded newer image for redis:6.0.4
29bf8656bc8b14a8ee7d64ed97f4f555246ef688cdaf2fae9bb797e92cb35814
liumiaocn:jeecg liumiao$ docker ps |grep redis
29bf8656bc8b redis:6.0.4 "docker-entrypoint.s…" 7 seconds ago Up 5 seconds 0.0.0.0:6379->6379/tcp redis
liumiaocn:jeecg liumiao$
步骤2: 启动MySQL
执行命令:
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d liumiaocn/mysql:5.7.16
liumiaocn:jeecg liumiao$ docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d liumiaocn/mysql:5.7.16
49ec74507aa7d70b320139ebed132424351bb7fb433c82d05945100260ea0f41
liumiaocn:jeecg liumiao$ docker ps |grep mysql
49ec74507aa7 liumiaocn/mysql:5.7.16 "docker-entrypoint.s…" 16 seconds ago Up 15 seconds 0.0.0.0:3306->3306/tcp mysql
liumiaocn:jeecg liumiao$
步骤3: 设定MySQL
MySQL启动之后需要作如下三件事情:
- 建库
- 建表以及初始化数据
- 设定大小写不敏感
前面两件事情都有SQL文件,通过执行即可完成,大小写敏感容易被忽视,不过也很容易可以通过执行日志进行确认。事前进行如下准备,将JEECG的db下提供的如下两个SQL文件拷贝至MySQL容器之中
liumiaocn:jeecg-boot liumiao$ docker cp 1mysql_schema.sql mysql:/tmp
liumiaocn:jeecg-boot liumiao$ docker cp 2jeecgboot_mysql5.7.sql mysql:/tmp
liumiaocn:jeecg-boot liumiao$
建库
liumiaocn:jeecg-boot liumiao$ docker exec -it mysql sh
# ls /tmp
1mysql_schema.sql 2jeecgboot_mysql5.7.sql
# mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.16 MySQL Community Server (GPL)Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)mysql> source /tmp/1mysql_schema.sql
Query OK, 1 row affected (0.01 sec)mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| jeecg-boot |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)mysql>
建表以及初始化数据
mysql> use jeecg-boot
Database changed
mysql> source /tmp/2jeecgboot_mysql5.7.sql
Query OK, 0 rows affected (0.00 sec)
...省略
Query OK, 1 row affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
+-------------------------------+
| Tables_in_jeecg-boot |
+-------------------------------+
| demo |
| demo_field_def_val_main |
| demo_field_def_val_sub |
| jeecg_monthly_growth_analysis |
| jeecg_order_customer |
| jeecg_order_main |
| jeecg_order_ticket |
| jeecg_project_nature_income |
| joa_demo |
| onl_cgform_button |
| onl_cgform_enhance_java |
| onl_cgform_enhance_js |
| onl_cgform_enhance_sql |
| onl_cgform_field |
| onl_cgform_head |
| onl_cgform_index |
| onl_cgreport_head |
| onl_cgreport_item |
| onl_cgreport_param |
| oss_file |
| qrtz_blob_triggers |
| qrtz_calendars |
| qrtz_cron_triggers |
| qrtz_fired_triggers |
| qrtz_job_details |
| qrtz_locks |
| qrtz_paused_trigger_grps |
| qrtz_scheduler_state |
| qrtz_simple_triggers |
| qrtz_simprop_triggers |
| qrtz_triggers |
| sys_announcement |
| sys_announcement_send |
| sys_category |
| sys_check_rule |
| sys_data_log |
| sys_data_source |
| sys_depart |
| sys_depart_permission |
| sys_depart_role |
| sys_depart_role_permission |
| sys_depart_role_user |
| sys_dict |
| sys_dict_item |
| sys_fill_rule |
| sys_log |
| sys_permission |
| sys_permission_data_rule |
| sys_position |
| sys_quartz_job |
| sys_role |
| sys_role_permission |
| sys_sms |
| sys_sms_template |
| sys_user |
| sys_user_agent |
| sys_user_depart |
| sys_user_role |
| test_demo |
| test_enhance_select |
| test_order_main |
| test_order_product |
| test_person |
| test_shoptype_tree |
+-------------------------------+
64 rows in set (0.00 sec)mysql>
设定大小写不敏感
mysql> exit
Bye
# echo "lower_case_table_names=1" >>/etc/mysql/mysql.conf.d/mysqld.cnf
#
重启MySQL容器
因为大小写不敏感的设定需要重启MySQL容器才能生效,所以需要使用docker restart mysql重启MySQL容器
liumiaocn:jeecg-boot liumiao$ docker restart mysql
mysql
liumiaocn:jeecg-boot liumiao$
步骤4: 启动jeecg容器
本文使用基于CentOS的JEECG镜像,为了简单,此镜像将前端和后端放在了一起,所以容器中会有两个进程存在,强迫症患者可以进一步拆分,由此产生的各种设定修改请自行负责。
执行命令:docker run --name=jeecg -d -p 8080:8080 -p 8088:80 liumiaocn/jeecg:centos-2.2.0
liumiaocn:jeecg-boot liumiao$ docker run --name=jeecg -d -p 8080:8080 -p 8088:80 liumiaocn/jeecg:centos-2.2.0
16318371bb5dd33eea37f76eeabf6710dd0c0d65c43e23870d17dbde188dc655
liumiaocn:jeecg-boot liumiao$ docker ps |grep jeecg
16318371bb5d liumiaocn/jeecg:centos-2.2.0 "/bin/sh -c '/bin/sh…" 6 seconds ago Up 4 seconds 0.0.0.0:8080->8080/tcp, 0.0.0.0:8088->80/tcp jeecg
liumiaocn:jeecg-boot liumiao$
步骤5: 确认结果
通过docker logs jeecg进行确认,如果日志中出现了如下类似结果,说明已经成功启动了:
----------------------------------------------------------Application Jeecg-Boot is running! Access URLs:Local: http://localhost:8080/jeecg-boot/External: http://172.17.0.4:8080/jeecg-boot/Swagger-UI: http://172.17.0.4:8080/jeecg-boot/doc.html
----------------------------------------------------------
liumiaocn:jeecg-boot liumiao$
登录确认页面
使用http://localhost:8088/来在本机进行登录确认
登录结果确认
注意事项
本文进行示例说明时,为了主要说明JEECG的部署方式的重点,容器启动的持久数据的保存均未列出,请根据需要自行设定。另外jar文件中由于使用了外部的Redis和MySQL服务,所以在实际使用时需要根据需要进行设定,
- 配置文件所在目录:jeecg-boot/jeecg-boot-module-system/src/main/resources
- 设定对象文件: application.yml
- 修改内容: active部分需要设定为prod
liumiaocn:resources liumiao$ head -n3 application.yml
spring:profiles:active: prod
liumiaocn:resources liumiao$
- 设定对象文件: application.yml
- 修改内容: 设定相应IP
liumiaocn:resources liumiao$ grep 192.168 application-prod.yml url: jdbc:mysql://192.168.31.242:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=falsehost: 192.168.31.242
liumiaocn:resources liumiao$
JEECG容器化部署相关推荐
- JEECG容器化部署:Alpine镜像方式
在前面的一篇文章中提到了JEECG的Alpine镜像使用时出现的问题,就是验证码需要使用到fontmanager,而环境中的OPENJDK的JRE中又没有提供,所以退而求其次使用官方的Dockerfi ...
- Docker容器化部署config-server无法直接访问
Docker容器化部署config-server无法直接访问 1. 本机ip启动方式: 2. Docker容器启动 1)问题 2)解决办法 - 本机启动 - 服务器启动俩种方式 3. dockerfi ...
- 容器化部署实践之Django应用部署(二)
上一篇文章有些同学感觉不够详细理解起来有些困难,我再来简单解释一下. 我们在开发的情况下: 浏览器请求→ python manage.py runserver(比如8000) → 到应用代码( ...
- .NET Core+MySql+Nginx 容器化部署
.NET Core容器化@Docker .NET Core容器化之多容器应用部署@Docker-Compose .NET Core+MySql+Nginx 容器化部署 GitHub-Demo:Dock ...
- 浅谈surging服务引擎中的rabbitmq组件和容器化部署
1.前言 上个星期完成了surging 的0.9.0.1 更新工作,此版本通过nuget下载引擎组件,下载后,无需通过代码build集成,引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎 ...
- 谈谈surging引擎的tcp、http、ws协议和如何容器化部署
1.前言 分布式已经成为了当前最热门的话题,分布式框架也百花齐放,群雄逐鹿.从中心化服务治理框架,到去中心化分布式服务框架,再到分布式微服务引擎,这都是通过技术不断积累改进而形成的结果.esb,网关, ...
- Prometheus 容器化部署,配合Grafan画图工具监控节点
Prometheus 容器化部署,配合Grafan画图工具监控节点 一.部署环境 主机名 IP地址 服务 prometheus 192.168.85.131 prometheus.grafana no ...
- 容器化部署与传统部署的区别及优势
编者按:随着互联网技术的发展和需求上的增加,从传统的物理服务器时代过渡到了容器化部署时代,那么容器化部署我们怎么去理解,以及它有什么优势呢?跟小编一起看看吧. 容器化部署与传统部署的区别 以Docke ...
- 项目docker容器化部署步骤
Docker在部署时的一些基本步骤(主要针对我公司的项目环境): 1.项目中存在不需要使用容器化的服务,所以请安装jdk7.redis.mq.zookeeper.dubbo控制台 2.镜像导入 #ca ...
最新文章
- java程序配置dns后超时_处理apache HTTP客户端保持活动连接断开,超时和DNS更改
- HP ProLiant服务器收集日志的方法
- 计算机没考好检讨,考试没考好检讨书范文(精选6篇)
- 微软亚洲研究院开源分布式机器学习工具包
- Flume性能测试报告
- mysql 实时血备份_windows下设置自动备份 mysql 批处理
- python彩票结果分析_即将放弃Python 2.7的不止有Numpy,还有pandas和这些工具
- 最佳5本Java性能调优书籍–精选,必读
- android图片浏览功能,怎么在Android应用中实现一个网页图片浏览功能
- 前端:JS/18/JS运算符(算术运算符,赋值运算符,字符串运算符,比较运算符,逻辑运算符,三元运算符),window.prompt()
- java.util.concurrent.atomic原子操作类包
- WIN7 SP1系统浏览器怎么离线升级到IE11,怎么解决?
- matlab单服务排队模型,MATLAB模拟银行单服务台排队模型
- mescroll-vue下拉上拉刷新的使用
- 基于PC104接口(ISA接口)的FPGA外围电路扩展板调试经验。
- .NET/C#大型项目研发必备(12)--使用MQ消息队列
- Python全栈开发-Mysql知识点总结(中)
- 74KB图片也高清,谷歌用神经网络打造图像压缩新算法
- kNN算法实现手写数字识别(机器学习)
- 【MySQL】数据类型