1.案例准备
1.1规划节点
节点规划,见表2-1-1。
表2-1-1节点规划
IP | 主机名 | 节点 |
10.24.2.63 | master | Kubernetes ALL_IN_ONE节点 |
1.2 基础准备
Docker和Docker Compose已安装完成。
2.案例实施
2.1 ERP管理系统介绍
企业资源计划即 ERP (Enterprise Resource Planning),建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。由美国 Gartner Group 公司于1990年提出。企业资源计划是 MRP II(企业制造资源计划)下一代的制造业系统和资源计划软件。除了MRP II 已有的生产资源计划、制造、财务、销售、采购等功能外,还有质量管理,实验室管理,业务流程管理,产品数据管理,存货、分销与运输管理,人力资源管理和定期报告系统。在我国 ERP 所代表的含义已经被扩大,用于企业的各类软件,已经统统被纳入 ERP 的范畴。它跳出了传统企业边界,从供应链范围去优化企业的资源,是基于网络经济时代的新一代信息系统。它主要用于改善企业业务流程以提高企业核心竞争力。
ERP 是由美国计算机技术咨询和评估集团 Gartner Group Inc 提出的一种供应链的管理思想。企业资源计划是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。ERP 系统支持离散型、流程型等混合制造环境,应用范围从制造业扩展到了零售业、服务业、银行业、电信业、政府机关和学校等事业部门,通过融合数据库技术、图形用户界面、第四代查询语言、客户服务器结构、计算机辅助开发工具、可移植的开放系统等对企业资源进行了有效的集成。
2.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
2.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.2009 0.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
2.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;"]
#设置容器启动时运行的命令。使用nginx命令启动Nginx服务器,通过-g "daemon off;"参数确保Nginx以前台模式运行,可以让Docker容器保持运行状态,直到Nginx进程终止。
(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.2009 0.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
2.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.2009 0.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
2.6 编排部署ERP
(1)编写docker-compose.yaml
编写docker-compose.yaml编排文件:
[root@k8s-master-node1 ERP]# vi docker-compose.yaml
version: '3'
services:
erp-mysql:
restart: always #设置无论退出状态如何,总是重启该服务。
image: erp-mysql:v1.0
container_name: erp-mysql
environment:
- "MYSQL_DATABASE=jsh_erp"
ports:
- 3306:3306
erp-redis:
image: erp-redis:v1.0
container_name: erp-redis
restart: always
ports:
- 6379:6379
command: redis-server --port 6379 --requirepass tshoperp --appendonly yes #设置Redis监听的端口、设置Redis密码、启用AOF持久化。
erp-server:
restart: always
image: erp-service:v1.0
container_name: erp-server
ports:
- 9999:9999
erp-web-ui:
restart: always
image: erp-nginx:v1.0
container_name: erp-web-ui
ports:
- 8888:80
查看服务:
[root@k8s-worker-node1 ERP]# docker-compose ps
Name 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管理系统,如图所示:
输入用户名(admin)和密码(123456)进行登录,如图所示: