23云计算全国职业技能大赛容器云-容器编排

本文详细描述了如何使用Dockerfile构建和容器化部署ERP系统中的关键组件,如MariaDB数据库、Redis缓存、Nginx反向代理和ERP服务器,以及通过docker-compose.yaml进行编排部署,确保系统服务的正常运行和网络映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.2.1 容器化部署 MariaDB [0.5 分]

编写 Dockerfile 文件构建 mysql 镜像,要求基于 centos 完成 MariaDB 数据库的安装和配置,并设置服务开机自启。编写 Dockerfile 构建镜像 erp-mysql:v1.0,要求使用 centos7.9.2009 镜像作为基镜像,完成 MariaDB 数据库的安装,设置 root 用户的密码为 tshoperp,新建数据库 jsh_erp 并导入数据库文件 jsh_erp.sql,并设置 MariaDB 数据库开机自启。

上传centos镜像

[root@k8s-master-node1 ERP]# docker load -i CentOS_7.9.2009.tar
Loaded image: centos:centos7.9.2009
[root@k8s-master-node1 ERP]#

编写repo本地文件

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

编写init.sh启动脚本

[root@k8s-master-node1 ERP]# cat 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;"
[root@k8s-master-node1 ERP]#

编写dockerfile文件

[root@k8s-master-node1 ERP]# cat Dockerfile-mariadb
FROM centos:centos7.9.2009
MAINTAINER hoyeong
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"]
[root@k8s-master-node1 ERP]#

构建镜像

[root@k8s-master-node1 ERP]# docker build -t erp-mysql:v1.0 -f Dockerfile-mariadb .

1.镜像构建成功得 0.1 分;
2.数据库安装且导入数据成功得 0.4 分。

2.2.2 容器化部署 Redis [0.5 分]

编写 Dockerfile 文件构建 redis 镜像,要求基于 centos 完成 Redis 服务的安装和配置,并设置服务开机自启。编写 Dockerfile构建镜像 erp-redis:v1.0,要求使用 centos7.9.2009镜像作为基础镜像,完成 Redis 服务的安装,修改其配置文件关闭保护模式,并设置 Redis服务开机自启。

[root@k8s-master-node1 ERP]# cat Dockerfile-redis
FROM centos:centos7.9.2009
MAINTAINER hoyeong
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
RUN sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
EXPOSE 6379
CMD ["/usr/bin/redis-server","/etc/redis.conf"]
[root@k8s-master-node1 ERP]#

构建镜像

[root@k8s-master-node1 ERP]# docker build -t erp-redis:v1.0 -f Dockerfile-redis .

1.镜像构建成功的 0.1 分;
2.Redis 服务安装成功且配置正确得 0.4 分

2.2.3 容器化部署 Nginx [0.5 分]

编写 Dockerfile 文件构建 nginx 镜像,要求基于 centos 完成 Nginx 服务的安装和配置,并设置服务开机自启。编写 Dockerfile 构建镜像 erp-nginx:v1.0,要求使用 centos7.9.2009 镜像作为基础镜像,完成 Nginx 服务的安装,使用提供的 app.tar.gz 和 nginx.conf 启动Nginx 服务,并设置开机自启。

[root@k8s-master-node1 ERP]# cat Dockerfile-nginx
FROM centos:centos7.9.2009
MAINTAINER hoyeong
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;"]
[root@k8s-master-node1 ERP]#

构建镜像

[root@k8s-master-node1 ERP]# docker build -t erp-nginx:v1.0 -f Dockerfile-nginx .

1.镜像构建成功得 0.3 分;
2.Nginx 安装成功且配置正确得 0.2 分。

2.2.4 容器化部署 ERP[0.5 分]

编写 Dockerfile 文件构建 erp 镜像,要求基于 centos 完成 JDK 环境和 ERP 服务的安装与配置,并设置服务开机自启。编写 Dockerfile 构建镜像 erp-server:v1.0,要求使用 centos7.9.2009 镜像作为基础镜像,完成 JDK 环境的安装,启动提供的 jar 包,并设置服务开机自启。

[root@k8s-master-node1 ERP]# cat Dockerfile-erp
FROM centos:centos7.9.2009
MAINTAINER hoyeong
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
[root@k8s-master-node1 ERP]#

构建镜像

[root@k8s-master-node1 ERP]# docker build -t erp-service:v1.0 -f Dockerfile-erp .

1.镜像构建成功得 0.3 分;
2.erp 环境安装正确得 0.2 分。

2.2.5 编排部署 ERP管理系统[1 分]

编写 docker-compose.yaml 文件,要求使用镜像 mysql、redis、nginx和 erp完成 ERP 管理系统的编排部署。编写 docker-compose.yaml完成 ERP管理系统的部署,要求定义 mysql、redis、nginx 和 erp 共四个 Service,分别使用镜像 erp-redis:v1.0、erp-mysql:v1.0、erpnginx:v1.0 和 erpserver:v1.0,并将 nginx 服务的 80 端口映射到宿主机的 8888 端口

1.8888 端口可以访问到 ERP 系统得 1 分

[root@k8s-master-node1 ERP]# cat docker-compose.yaml
version: '3'
services:
 erp-mysql:
  restart: always
  image: erp-mysql:latest
  container_name: erp-mysql
  environment:
   - "MYSQL_DATABASE=jsh_erp"
  ports:
   - 3306:3306
 erp-redis:
  image: erp-redis:latest
  container_name: erp-redis
  restart: always
  ports:
   - 6379:6379
  command: redis-server --port 6379 --requirepass tshoperp --appendonly yes
 erp-server:
  restart: always
  image: erp-service:latest
  container_name: erp-server
  ports:
   - 9999:9999
 erp-web-ui:
  restart: always
  image: erp-nginx:latest
  container_name: erp-web-ui
  ports:
   - 8888:80

启动该服务

[root@k8s-master-node1 ERP]# docker-compose up -d
[+] Running 5/5
 ⠿ Network erp_default   Created                                                                                   0.1s
 ⠿ Container erp-redis   Started                                                                                   1.1s
 ⠿ Container erp-server  Started                                                                                   1.2s
 ⠿ Container erp-web-ui  Started                                                                                   1.1s
 ⠿ Container erp-mysql   Started                                                                                   1.2s

IP:8888访问:(admin/123456)

在这里插入图片描述
通过网盘分享的文件:ERP.tar.gz
链接: https://pan.baidu.com/s/1TwvNjDHUB2vHjM-j4iBeWQ?pwd=ibka 提取码: ibka

### 关于全国云计算技能大赛中的容器编排 #### Docker 和 Kubernetes 的角色 在全国云计算技能大赛中,Docker 和 Kubernetes 是两个核心工具。Docker 提供了一种轻量级的方法来打包应用程序及其依赖项到一个独立的容器中[^1]。而 Kubernetes 则提供了一个平台用于自动化部署、扩展以及管理这些容器化的应用。 #### 比赛规则概览 比赛中通常会设定特定的任务或挑战项目,比如实现微服务架构下的高可用集群搭建,这可能涉及到使用 Docker 来创建自定义镜像并利用 Kubernetes 进行调度和服务发现等功能。参赛者需按照官方发布的指南准备解决方案,在规定时间内完成指定目标,并提交最终成果报告和技术文档。 #### 参考案例分析 对于容器化部署 Kafka 的例子可以作为参考之一。通过编写合适的 `Dockerfile` 文件来定制 Zookeeper 镜像版本(如命令 `[root@master mariadb]# docker build -t chinaskill-zookeeper:v1.1 .` 所示),再借助 Helm Chart 或 YAML 清单文件配置 K8s 上面运行多个实例形成分布式消息队列系统[^3]。 #### 学习资源推荐 为了更好地理解和掌握相关技术栈,建议查阅以下几类资料: - **官方文档**:Kubernetes 官方网站提供了详尽的手册和教程;同样地,Docker 文档也是不可多得的学习材料。 - **在线课程**:Coursera, Udemy 等平台上有很多针对初学者至高级用户的培训视频系列。 - **社区交流**:加入 GitHub Discussions, Stack Overflow 社区讨论组可以获得实时帮助解答疑问。 - **实践练习**:Minikube 能够让开发者在本地环境中快速启动小型 K8s 实验室环境来进行实验操作。 ```bash minikube start kubectl get nodes ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huhy~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值