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容器化部署相关推荐

  1. JEECG容器化部署:Alpine镜像方式

    在前面的一篇文章中提到了JEECG的Alpine镜像使用时出现的问题,就是验证码需要使用到fontmanager,而环境中的OPENJDK的JRE中又没有提供,所以退而求其次使用官方的Dockerfi ...

  2. Docker容器化部署config-server无法直接访问

    Docker容器化部署config-server无法直接访问 1. 本机ip启动方式: 2. Docker容器启动 1)问题 2)解决办法 - 本机启动 - 服务器启动俩种方式 3. dockerfi ...

  3. 容器化部署实践之Django应用部署(二)

    上一篇文章有些同学感觉不够详细理解起来有些困难,我再来简单解释一下. 我们在开发的情况下:     浏览器请求→ python manage.py runserver(比如8000) → 到应用代码( ...

  4. .NET Core+MySql+Nginx 容器化部署

    .NET Core容器化@Docker .NET Core容器化之多容器应用部署@Docker-Compose .NET Core+MySql+Nginx 容器化部署 GitHub-Demo:Dock ...

  5. 浅谈surging服务引擎中的rabbitmq组件和容器化部署

    1.前言 上个星期完成了surging 的0.9.0.1 更新工作,此版本通过nuget下载引擎组件,下载后,无需通过代码build集成,引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎 ...

  6. 谈谈surging引擎的tcp、http、ws协议和如何容器化部署

    1.前言 分布式已经成为了当前最热门的话题,分布式框架也百花齐放,群雄逐鹿.从中心化服务治理框架,到去中心化分布式服务框架,再到分布式微服务引擎,这都是通过技术不断积累改进而形成的结果.esb,网关, ...

  7. Prometheus 容器化部署,配合Grafan画图工具监控节点

    Prometheus 容器化部署,配合Grafan画图工具监控节点 一.部署环境 主机名 IP地址 服务 prometheus 192.168.85.131 prometheus.grafana no ...

  8. 容器化部署与传统部署的区别及优势

    编者按:随着互联网技术的发展和需求上的增加,从传统的物理服务器时代过渡到了容器化部署时代,那么容器化部署我们怎么去理解,以及它有什么优势呢?跟小编一起看看吧. 容器化部署与传统部署的区别 以Docke ...

  9. 项目docker容器化部署步骤

    Docker在部署时的一些基本步骤(主要针对我公司的项目环境): 1.项目中存在不需要使用容器化的服务,所以请安装jdk7.redis.mq.zookeeper.dubbo控制台 2.镜像导入 #ca ...

最新文章

  1. java程序配置dns后超时_处理apache HTTP客户端保持活动连接断开,超时和DNS更改
  2. HP ProLiant服务器收集日志的方法
  3. 计算机没考好检讨,考试没考好检讨书范文(精选6篇)
  4. 微软亚洲研究院开源分布式机器学习工具包
  5. Flume性能测试报告
  6. mysql 实时血备份_windows下设置自动备份 mysql 批处理
  7. python彩票结果分析_即将放弃Python 2.7的不止有Numpy,还有pandas和这些工具
  8. 最佳5本Java性能调优书籍–精选,必读
  9. android图片浏览功能,怎么在Android应用中实现一个网页图片浏览功能
  10. 前端:JS/18/JS运算符(算术运算符,赋值运算符,字符串运算符,比较运算符,逻辑运算符,三元运算符),window.prompt()
  11. java.util.concurrent.atomic原子操作类包
  12. WIN7 SP1系统浏览器怎么离线升级到IE11,怎么解决?
  13. matlab单服务排队模型,MATLAB模拟银行单服务台排队模型
  14. mescroll-vue下拉上拉刷新的使用
  15. 基于PC104接口(ISA接口)的FPGA外围电路扩展板调试经验。
  16. .NET/C#大型项目研发必备(12)--使用MQ消息队列
  17. Python全栈开发-Mysql知识点总结(中)
  18. 74KB图片也高清,谷歌用神经网络打造图像压缩新算法
  19. kNN算法实现手写数字识别(机器学习)
  20. 【MySQL】数据类型

热门文章

  1. Linux修改hosts
  2. freemarker基于docx格式创建模板导出带图片pdf文件
  3. Java中的元空间(Metaspace)
  4. C语言库函数strstr、strch
  5. 【C】阶乘后面0的数量
  6. 人工智能会成为下一场的科技革命吗?
  7. 生日快乐程序_「秒福」小程序:送祝福,2020我们不一样
  8. Rabbitmq学习笔记(尚硅谷2021)
  9. python爬取返利网
  10. MMU and MPU