JEECG容器化部署

JEECG代碼中有一個Dockerfile,基本思路是以CentOS爲基礎鏡像,在其中安裝了nginx、jdk、mysql和redis,將編譯出來的前端文件拷貝至nginx的指定目錄,後端的jar文件放至根目錄,並生成nginx的配置文件和腳本啓動文件,在腳本啓動文件中啓動redis、nginx和java -jar的後端服務,這篇文章將MySQL和Redis拿出來,作爲容器化部署的一種粗糙的解決方式。

爲何不使用Alpine

大概率是因爲驗證碼這樣的東西需要sun.awt相應的支持,alpine下的OpenJDK的JRE無法支持,詳細可參看:

步驟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=false
    host: 192.168.31.242
liumiaocn:resources liumiao$ 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章