当前位置: 首页 > news >正文

容器化部署ERP管理系统

1. ERP管理系统介绍

企业资源计划即 ERP (Enterprise Resource Planning),建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。由美国 Gartner Group 公司于1990年提出。企业资源计划是 MRP II(企业制造资源计划)下一代的制造业系统和资源计划软件。除了MRP II 已有的生产资源计划、制造、财务、销售、采购等功能外,还有质量管理,实验室管理,业务流程管理,产品数据管理,存货、分销与运输管理,人力资源管理和定期报告系统。在我国 ERP 所代表的含义已经被扩大,用于企业的各类软件,已经统统被纳入 ERP 的范畴。它跳出了传统企业边界,从供应链范围去优化企业的资源,是基于网络经济时代的新一代信息系统。它主要用于改善企业业务流程以提高企业核心竞争力。

ERP 是由美国计算机技术咨询和评估集团 Gartner Group Inc 提出的一种供应链的管理思想。企业资源计划是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。ERP 系统支持离散型、流程型等混合制造环境,应用范围从制造业扩展到了零售业、服务业、银行业、电信业、政府机关和学校等事业部门,通过融合数据库技术、图形用户界面、第四代查询语言、客户服务器结构、计算机辅助开发工具、可移植的开放系统等对企业资源进行了有效的集成。

2. 容器化部署MariaDB

(1)基础环境准备

下载软件包并解压:

[root@k8s-master-node1 ~]# curl -O http://mirrors.douxuedu.com/competition/ERP.tar.gz
[root@k8s-master-node1 ~]# tar -zxvf ERP.tar.gz

导入CentOS基础镜像:

[root@k8s-master-node1 ~]# docker load -i ERP/CentOS_7.9.2009.tar
(2)编写Dockerfile

编写yum源:

[root@k8s-worker-node1 ~]# cd ERP/
[root@k8s-worker-node1 ERP]# vi local.repo
[erp]
name=erp
baseurl=file:///root/yum
gpgcheck=0
enabled=1

编写init.sh脚本:

[root@k8s-worker-node1 ERP]# vi mysql_init.sh
#!/bin/bash
mysql_install_db --user=root
mysqld_safe --user=root &
sleep 8
mysqladmin -u root password 'tshoperp'
mysql -uroot -ptshoperp -e "grant all on *.* to 'root'@'%' identified by 'tshoperp'; flush privileges;"
mysql -uroot -ptshoperp -e " create database jsh_erp;use jsh_erp;source /opt/jsh_erp.sql;"

编写Dockerfile:

[root@k8s-worker-node1 ERP]# vi Dockerfile-mariadb
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
ENV LC_ALL en_US.UTF-8
RUN yum -y install mariadb-server
COPY jsh_erp.sql /opt/
COPY mysql_init.sh /opt/
RUN bash /opt/mysql_init.sh
EXPOSE 3306
CMD ["mysqld_safe","--user=root"]
(3)构建镜像

构建镜像:

[root@k8s-master-node1 ERP]# docker build -t erp-mysql:v1.0 -f Dockerfile-mariadb .
[+] Building 0.3s (13/13) FINISHED               docker:default => [internal] load build definition from Dockerfile-mariadb       0.0s=> => transferring dockerfile: 419B                   0.0s=> [internal] load .dockerignore                    0.0s=> => transferring context: 2B                      0.0s=> [internal] load metadata for docker.io/library/centos:centos7.9.2009 0.0s=> [1/8] FROM docker.io/library/centos:centos7.9.2009         0.0s=> [internal] load build context                    0.0s=> => transferring context: 33.23kB                  0.0s=> CACHED [2/8] RUN rm -rf /etc/yum.repos.d/*              0.0s=> CACHED [3/8] COPY local.repo /etc/yum.repos.d/           0.0s=> CACHED [4/8] COPY yum /root/yum                  0.0s=> CACHED [5/8] RUN yum -y install mariadb-server            0.0s=> CACHED [6/8] COPY jsh_erp.sql /opt/                 0.0s=> CACHED [7/8] COPY mysql_init.sh /opt/               0.0s=> CACHED [8/8] RUN bash /opt/mysql_init.sh               0.0s=> exporting to image                          0.0s=> => exporting layers                         0.0s=> => writing image sha256:01d497e86d78dea2113ff690d39884234a059b0bdd1383c525a3daf3b1efd209  0.0s=> => naming to docker.io/library/erp-mysql:v1.0            0.0s

3. 容器化部署Redis

(1)编写Dockerfile

编写Dockerfile文件:

[root@k8s-worker-node1 ERP]# vi Dockerfile-redis
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum -y install redis
RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf && \sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
EXPOSE 6379
CMD ["/usr/bin/redis-server","/etc/redis.conf"]
(2)构建镜像

构建镜像:

[root@k8s-worker-node1 ERP]# docker build -t erp-redis:v1.0 -f Dockerfile-redis .
[+] Building 14.0s (11/11) FINISHED                                                     docker:default=> [internal] load .dockerignore                    0.1s=> => transferring context: 2B                     0.0s=> [internal] load build definition from Dockerfile-redis        0.1s=> => transferring dockerfile: 449B                   0.0s=> [internal] load metadata for docker.io/library/centos:centos7.9.20090.0s=> [1/6] FROM docker.io/library/centos:centos7.9.2009         0.0s=> [internal] load build context                     0.1s=> => transferring context: 33.04kB                  0.0s=> CACHED [2/6] RUN rm -rf /etc/yum.repos.d/*             0.0s=> CACHED [3/6] COPY local.repo /etc/yum.repos.d/           0.0s=> CACHED [4/6] COPY yum /root/yum                   0.0s=> [5/6] RUN yum -y install redis                    11.8s=> [6/6] RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf &&   sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf         1.3s=> exporting to image                         0.5s => => exporting layers                         0.5s => => writing image sha256:6e15c000464c400c0396802df6efbcd1466759dec59a0073d79758f2aae5328d  0.0s => => naming to docker.io/library/erp-redis:v1.0            0.0s

4. 容器化部署前端服务

(1)编写Dockerfile

编写Dockerfile:

[root@k8s-worker-node1 ERP]# vi Dockerfile-nginx
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum -y install nginx
COPY nginx/nginx.conf /etc/nginx/nginx.conf
COPY nginx/app.tar.gz /
RUN tar -zxvf /app.tar.gz -C /
RUN /bin/bash -c 'echo init ok'
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;client_max_body_size 10m;server {listen       80;location / {root /app;try_files $uri $uri/ /index.html $uri/ =404;index  index.html index.htm;}location /jshERP-boot/ {proxy_pass http://erp-server:9999/jshERP-boot/;proxy_set_header Host $host:$server_port;}}
}
(2)构建镜像

构建镜像:

[root@k8s-worker-node1 ERP]# docker build -t erp-nginx:v1.0 -f Dockerfile-nginx .
[+] Building 20.2s (14/14) FINISHED                                                     docker:default=> [internal] load build definition from Dockerfile-nginx        0.1s=> => transferring dockerfile: 437B                  0.0s=> [internal] load .dockerignore                    0.1s=> => transferring context: 2B                     0.0s=> [internal] load metadata for docker.io/library/centos:centos7.9.20090.0s=> [1/9] FROM docker.io/library/centos:centos7.9.2009         0.0s=> [internal] load build context                    0.1s=> => transferring context: 4.45MB                   0.1s=> CACHED [2/9] RUN rm -rf /etc/yum.repos.d/*             0.0s=> CACHED [3/9] COPY local.repo /etc/yum.repos.d/           0.0s=> CACHED [4/9] COPY yum /root/yum                   0.0s=> [5/9] RUN yum -y install nginx                    16.3s=> [6/9] COPY nginx/nginx.conf /etc/nginx/nginx.conf          0.3s => [7/9] COPY nginx/app.tar.gz /                    0.3s => [8/9] RUN tar -zxvf /app.tar.gz -C /                 1.6s => [9/9] RUN /bin/bash -c 'echo init ok'                0.6s => exporting to image                          0.8s => => exporting layers                         0.8s => => writing image sha256:ae6988d7e559c846d64e9dde13cab98253fdbf1356dcc94c6b838fce965e87e9  0.0s => => naming to docker.io/library/erp-nginx:v1.0            0.0s

5. 容器化部署ERP服务

(1)编写Dockerfile

编写Dockerfile:

[root@k8s-worker-node1 ERP]# vi Dockerfile-erp
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
COPY app.jar /root
ADD yum /root/yum
RUN rm -rfv /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/local.repo
RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
EXPOSE 9999
CMD java -jar /root/app.jar
(2)构建镜像

构建镜像:

[root@k8s-worker-node1 ERP]# docker build -t erp-service:v1.0 -f Dockerfile-erp .
[+] Building 118.7s (11/11) FINISHED                                                    docker:default=> [internal] load .dockerignore                    0.1s=> => transferring context: 2B                     0.0s=> [internal] load build definition from Dockerfile-erp         0.1s=> => transferring dockerfile: 368B                  0.0s=> [internal] load metadata for docker.io/library/centos:centos7.9.20090.0s=> CACHED [1/6] FROM docker.io/library/centos:centos7.9.2009      0.0s=> [internal] load build context                    0.4s=> => transferring context: 41.61MB                   0.4s=> [2/6] COPY app.jar /root                       5.5s=> [3/6] ADD yum /root/yum                       14.0s=> [4/6] RUN rm -rfv /etc/yum.repos.d/*                 2.0s=> [5/6] COPY local.repo /etc/yum.repos.d/local.repo          0.6s=> [6/6] RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel 92.6s => exporting to image                         3.3s => => exporting layers                         3.3s => => writing image sha256:1c5adc2becb3f4ca5ba28369fad51fe6e814dec92a7d04a5872469cb9432e5eb  0.0s => => naming to docker.io/library/erp-service:v1.0           0.0s

6. 编排部署ERP

(1)编写docker-compose.yaml

编写docker-compose.yaml编排文件:

[root@k8s-master-node1 ERP]# vi docker-compose.yaml
version: '3'
services:erp-mysql:restart: alwaysimage: erp-mysql:v1.0container_name: erp-mysqlenvironment:- "MYSQL_DATABASE=jsh_erp"ports:- 3306:3306erp-redis:image: erp-redis:v1.0container_name: erp-redisrestart: alwaysports:- 6379:6379command: redis-server --port 6379 --requirepass tshoperp --appendonly yeserp-server:restart: alwaysimage: erp-service:v1.0container_name: erp-serverports:- 9999:9999erp-web-ui:restart: alwaysimage: erp-nginx:v1.0container_name: erp-web-uiports:- 8888:80
以上是一个使用Docker Compose定义的服务配置文件。该配置文件描述了四个服务:erp-mysql、erp-redis、erp-server和erp-web-ui。erp-mysql服务使用名为"erp-mysql:v1.0"的镜像,它将容器的名称设置为"erp-mysql"。该服务将始终在容器失败时重新启动。容器中设置了一个名为"MYSQL_DATABASE"的环境变量,值为"jsh_erp"。端口映射将容器的3306端口映射到主机的3306端口。erp-redis服务使用名为"erp-redis:v1.0"的镜像,它将容器的名称设置为"erp-redis"。该服务将始终在容器失败时重新启动。端口映射将容器的6379端口映射到主机的6379端口。容器启动时使用了命令"redis-server --port 6379 --requirepass tshoperp --appendonly yes"来运行Redis服务器,指定了端口和密码等参数。
redis-server --port 6379 --requirepass tshoperp --appendonly yes,它将以Redis服务器模式启动容器。以下是命令中使用的选项的说明:
--port 6379: 指定Redis服务器监听的端口为6379。
--requirepass tshoperp: 设置Redis服务器的密码为"tshoperp"。客户端在连接到Redis服务器时需要提供此密码才能进行操作。
--appendonly yes: 启用Redis的持久化功能,将写操作追加到磁盘上的文件中,以便在重启后恢复数据。erp-server服务使用名为"erp-service:v1.0"的镜像,它将容器的名称设置为"erp-server"。该服务将始终在容器失败时重新启动。端口映射将容器的9999端口映射到主机的9999端口。erp-web-ui服务使用名为"erp-nginx:v1.0"的镜像,它将容器的名称设置为"erp-web-ui"。该服务将始终在容器失败时重新启动。端口映射将容器的80端口映射到主机的8888端口。这个配置文件描述了一个名为ERP的应用程序堆栈,包括MySQL作为数据库,Redis作为缓存,erp-server作为业务逻辑服务,erp-web-ui作为Nginx反向代理和Web界面。每个服务都使用了不同的镜像,并指定了容器的名称和端口映射规则。
[root@master ERP]# ll
total 247428
-rw-r--r-- 1 root root  41569954 Jan 10  2022 app.jar
-rw------- 1 root root 211696640 Jan 13  2022 CentOS_7.9.2009.tar
-rw-r--r-- 1 root root     75822 Jan 10  2022 jsh_erp.sql
drwxr-xr-x 2 root root        42 Jan 11  2022 nginx
drwxr-xr-x 3 root root        29 Sep 14  2021 org
drwxr-xr-x 6 root root     16384 Jan 11  2022 yum
[root@master ERP]# jar xf app.jar 
[root@master ERP]# ll
total 247428
-rw-r--r-- 1 root root  41569954 Jan 10  2022 app.jar
drwxr-xr-x 4 root root        32 Sep 14  2021 BOOT-INF
-rw------- 1 root root 211696640 Jan 13  2022 CentOS_7.9.2009.tar
-rw-r--r-- 1 root root     75822 Jan 10  2022 jsh_erp.sql
drwxr-xr-x 3 root root        67 Sep 14  2021 META-INF
drwxr-xr-x 2 root root        42 Jan 11  2022 nginx
drwxr-xr-x 3 root root        29 Sep 14  2021 org
drwxr-xr-x 6 root root     16384 Jan 11  2022 yum[root@master classes]# pwd
/root/ERP/BOOT-INF/classes
[root@master classes]# vi application.yaml redis:host: ${REDIS_HOST:erp-redis}port: ${REDIS_PORT:6379}database: ${REDIS_DB:0}password: ${REDIS_PASSWORD:tshoperp}
(2)部署服务

部署服务:

[root@k8s-worker-node1 ERP]# docker-compose up -d
Creating network "erp_default" with the default driver
Creating erp-redis ... done
Creating erp-mysql ... done
Creating erp-server ... done
Creating erp-web-ui ... done

查看服务:

[root@k8s-worker-node1 ERP]# docker-compose psName         Command        State          Ports         
----------------------------------------------------------------------------------------------
erp-mysql  mysqld_safe --user=root     Up   0.0.0.0:3306->3306/tcp,:::3306->3306/tcp
erp-redis  redis-server --port 6379 - ...  Up   0.0.0.0:6379->6379/tcp,:::6379->6379/tcp
erp-server  /bin/sh -c java -jar /root ...  Up   0.0.0.0:9999->9999/tcp,:::9999->9999/tcp
erp-web-ui  nginx -g daemon off;       Up   0.0.0.0:8888->80/tcp,:::8888->80/tcp   

在浏览器上通过http://IP:8888访问ERP管理系统,如图1所示:

1.png

输入用户名(admin)和密码(123456)进行登录,如图2所示:

2.png

![image-20231019222344531](/Users/guoxinglong/Library/Application Support/typora-user-images/image-20231019222344531.png)

http://www.jsqmd.com/news/701248/

相关文章:

  • 3步解锁Steam卡片自动化收集:Idle Master智能挂卡完全指南
  • Agentation框架:构建多轮AI对话系统的状态机设计与工程实践
  • 如何快速永久保存QQ空间历史动态:终极完整解决方案
  • 四博AI智能音响方案设计
  • 基于Java的LangChain4j智能客服实战:从零搭建企业级对话系统
  • 别再手动移植了!用STM32CubeIDE一键导入旧版CubeMX (.ioc)配置,省时避坑
  • Azure Pipelines自托管代理实战:从部署到调优的完整指南
  • 2026年Q2内江防水补漏公司排行及核心能力对比:内江家政服务、内江市中区防水补漏、内江漏水检测精准定位、内江玻璃幕墙清洗选择指南 - 优质品牌商家
  • 如何正确解析含 HTML 实体的 XML 字符串并渲染为 HTML 表格
  • 艾尔登法环存档迁移终极指南:如何安全转移你的游戏角色数据
  • 机器学习超参数优化:随机搜索与网格搜索实战
  • 四博AI智能拍学机方案设计
  • 无人机遥感影像匀色处理
  • 机器学习在糖尿病预测中的模型优化与实践
  • 51单片机驱动DS18B20:Proteus仿真中的上拉电阻与排阻选择详解
  • AI Agent技能库构建:文档转Markdown的自动化工具实战
  • 线性回归原理与实战:从基础到金融风控应用
  • 快速解密网易云音乐NCM文件:ncmdump工具完整使用指南
  • 四博CozyLife AI智能音响方案:技术化设计与实现
  • MySQL基础与常用函数详解
  • EvoAgentX框架实战:构建自进化AI智能体生态系统的全流程指南
  • Whiz:基于AI的终端命令生成工具,提升开发效率
  • 机器学习中的矩阵运算核心技术与实战优化
  • 数字化办公助手:OpenClaw 部署与多软件联动
  • 2026防腐彩涂板哪家可靠:山东小草钢卷/山东彩涂卷/山东彩涂板/山东彩涂钢卷/山东彩钢卷/山东彩钢瓦钢卷/山东覆膜板/选择指南 - 优质品牌商家
  • 四博AI智能音响(4G S3版)方案设计:技术实现与代码解析
  • 长链思维推理:大模型深度思考的核心能力与工程实践指南
  • 2026青羊区黄金回收技术解析:离我最近的黄金回收、金店回收、金银回收、铂金回收、锦江区黄金回收、附近哪里有黄金回收的地方选择指南 - 优质品牌商家
  • 机器学习中异常值处理的原理与实践
  • 计算机科学中的软硬件逻辑等效原理及其应用