ChinaSkillsMall-1(GZ-2021040/1)
云梦公司开发了一套基于SpringBoot+MyBatis微服务架构的ChinaSkillsMall电商系统,并实现全容器化部署,ChinaSkillsMall电商应用系统架构图如下:
| 模块 | 说明 |
|---|---|
| mall-monitor | 监控中心 |
| mall-gateway | 微服务网关 |
| mall-auth | 认证中心 |
| mall-admin | 商城后台服务 |
| mall-portal | 商城前台服务 |

tar -xf mall-swarm.tar && mv mall-swarm /opt
mkdir mall-swarm && cd mall-swarm
[root@master mall-swarm]# vi ftp.repo
[centos]
name=centos
baseurl=ftp://192.168.100.101/centos
gpgcheck=0
enable=1
[gpmall]
name=gpmall
baseurl=ftp://192.168.100.101/mall-swarm/mall-repo
enabled=1
gpgcheck=0
请将Redis组件、RabbitMQ组件、MongoDB组件和前端Nginx组件按照要求进行容器化。
编写Dockerfile制作Redis镜像,生成镜像名为mall-redis:v1.1,并推送其到私有仓库。具体要求如下:
- 基于centos:centos7.5.1804基础镜像;
- 指定作者为Chinaskill;
- 修改配置文件中的bind 127.0.0.1为bind 0.0.0.0;
- 设置Redis免密,并关闭保护模式;
- 开放端口:6379;
- 设置服务开机自启
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
RUN yum -y install redis*
RUN sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis.conf && sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
EXPOSE 6379
CMD ["redis-server","/etc/redis.conf"]
docker build -t mall-redis:v1.1 .
编写Dockerfile制作RabbitMQ镜像,生成镜像名为mall-rabbitmq:v1.1,并推送其到私有仓库。具体要求如下:
- 基于centos:7.5.1804基础镜像;
- 指定作者为Chinaskill;
- 开放端口:5672、15672;
- 设置服务开机自启。
vi rabbitmq-user.sh
#!/bin/bash
## 创建RabbitMQ用户
/usr/lib/rabbitmq/bin/rabbitmq-server -detached
sleep 3
/usr/lib/rabbitmq/bin/rabbitmqctl add_vhost mall
/usr/lib/rabbitmq/bin/rabbitmqctl add_user mall mall
/usr/lib/rabbitmq/bin/rabbitmqctl set_user_tags mall administrator
/usr/lib/rabbitmq/bin/rabbitmqctl set_permissions -p mall mall ‘.*’ ‘.*’ ‘.*’
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY rabbitmq-user.sh /opt/rabbitmq-user.sh
RUN yum -y install rabbitmq-server
EXPOSE 5672 15672
CMD [“/bin/bash”,”/opt/rabbitmq-user.sh”]
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
RUN yum -y install rabbitmq-server
EXPOSE 5672
EXPOSE 15672
ENTRYPOINT rabbitmq-plugins enable rabbitmq_management && rabbitmq-server
CMD ["rabbitmq-server"]
编写Dockerfile制作MongDB镜像,生成镜像名为mall-mongodb:v1.1,并推送其到私有仓库。具体要求如下:
- 基于centos:centos7.5.1804基础镜像;
- 指定作者为Chinaskill;
- 开放端口:27017;
- 设置服务开机自启。
FROM centos
MAINTAINER Chinaskill
COPY mongodb.repo /etc/yum.repos.d/mongodb.repo
RUN yum install -y mongodb-org
EXPOSE 27017
RUN systemctl enable mongod
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
COPY ftp.repo /etc/yum.repos.d/
RUN yum -y install openssh
RUN yum install -y mongodb-org
EXPOSE 27017
RUN systemctl enable mongod
编写Dockerfile制作Web应用系统Nginx镜像,生成镜像名为mall-nginx:v1.1,并推送其到私有仓库。具体要求如下: (2分)
- 基于centos:7.5.1804基础镜像;
- 指定作者为Chinaskill;
- 安装Nginx服务,并配置反向代理;
- 暴露80端口;
新建nginx文件夹:
生成前端文件:
[root@master mall-swarm]# tar -zxvf mall-admin-web.tar.gz
[root@master mall-swarm]# cd mall-admin-web
[root@master mall-admin-web]# vi config/prod.env.js
‘use strict’
module.exports = {
NODE_ENV: ‘”production”‘,
BASE_API: ‘”http://10.24.2.156:8201/mall-admin”‘ #修改为本机IP
}
使用命令进行打包,生成dist目录:
[root@master mall-admin-web]# cd ../
[root@master mall-swarm]# tar zxvf node-v6.17.1-linux-x64.tar.gz
[root@master mall-swarm]# mv node-v6.17.1-linux-x64 /usr/local/node
[root@master mall-swarm]# vi /etc/profile
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
[root@master mall-swarm]# source /etc/profile
[root@master mall-swarm]# node -v
v6.17.1
[root@master mall-swarm]# npm -v
3.10.10
[root@master mall-swarm]# cd mall-admin-web
[root@master mall-admin-web]# npm run build
[root@master mall-admin-web]# mv dist/ ../
[root@master mall-admin-web]# cd ../
编写Dockerfile:
vi dockerfile
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
COPY ftp.repo /etc/yum.repos.d/
RUN yum -y install nginx
COPY dist/ /usr/share/nginx/html/
EXPOSE 80
CMD [“nginx”,”-g”,”daemon off;”]
docker build -t mall-nginx:v1.1 .
- 创建mall.yaml文件,使用上述镜像编排部署ChinaSkillsMall应用系统。(2分)
导入镜像:
[root@master mall-swarm]# docker load -i images/mall_mall-admin_1.0-SNAPSHOT.tar
[root@master mall-swarm]# docker load -i images/mall_mall-auth_1.0-SNAPSHOT.tar
[root@master mall-swarm]# docker load -i images/mall_mall-gateway_1.0-SNAPSHOT.tar
vi docker-compose.yaml
version: ‘3’
services:
mysql:
image: mall-mysql:v1.1
container_name: mall-mysql
restart: always
ports:
– 3306:3306
redis:
image: mall-redis:v1.1
container_name: redis
ports:
– 6379:6379
nginx:
image: mall-nginx:v1.1
container_name: nginx
ports:
– 8888:80
rabbitmq:
image: mall-rabbit:v1.1
container_name: rabbitmq
ports:
– 5672:5672
– 15672:15672
nacos-registry:
image: mall-nacos:v1.1
container_name: nacos-registry
ports:
– 8848:8848
mall-admin:
image: mall/mall-admin:1.0-SNAPSHOT
container_name: mall-admin
ports:
– 8080:8080
links:
– mysql:db
mall-gateway:
image: mall/mall-gateway:1.0-SNAPSHOT
container_name: mall-gateway
ports:
– 8201:8201
links:
– redis:redis
– nacos-registry:nacos-registry
mall-auth:
image: mall/mall-auth:1.0-SNAPSHOT
container_name: mall-auth
ports:
– 8401:8401
links:
– nacos-registry:nacos-registry
ChinaSkillsMall-2(Mall商城)
云梦公司开发了一套基于SpringBoot+MyBatis 微服务架构的ChinaSkillsMall 电商系统, 并实现全容器化部署,ChinaSkillsMall 电商应用系统架构如图 1 所示,系统说明如表 2 所示。

| 模块 | 说明 |
|---|---|
| mall-monitor | 监控中心 |
| mall-gateway | 微服务网关 |
| mall-auth | 认证中心 |
| mall-admin | 商城后台服务 |
| mall-portal | 商城前台服务 |
将 MariaDB 数据库组件、Redis 消息组件、RabbitMQ 消息组件、Nacos-Registry 注册中心服务组件和前端 Nginx 组件按照要求进行容器化。
[root@master mall-swarm]# cat > ftp.repo<< EOF
[centos]
name=centos
baseurl=ftp://192.168.100.101/centos
gpgcheck=0
enable=1
[gpmall]
name=mall
baseurl=ftp://192.168.100.101/mall-swarm/mall-repo
enabled=1
gpgcheck=0
EOF
在 master 节 点 上 编 写 /root/mall-swarm/Dockerfile-mariadb 文 件 构 建chinaskillmall-mariadb:v1.1 镜像,具体要求为
- 基础镜像:centos:centos7.5.1804;
- 作者:Chinaskill;
- 安装并初始化 mariadb,密码:root;
- 设置数据库编码为UTF-8;
- 开放端口:3306
- 设置 mariadb 开机自启。
[root@master mall-swarm]# vim init.sh #!/bin/bash mysql_install_db --user=root mysqld_safe --user=root & sleep 8 mysqladmin -u root password 'root' mysql -uroot -proot -e "grant all on *.* to 'reader'@'%' identified by '123456';flush privileges;" mysql -uroot -proot -e "create database mall;use mall;source /opt/mall.sql;"[root@master mall-swarm]# vim Dockerfile-mariadb FROM centos:centos7.5.1804 MAINTAINER Chinaskill RUN rm -rf /etc/yum.repos.d/* ADD ftp.repo /etc/yum.repos.d/ ADD mall.sql init.sh /opt/ ENV LC_ALL en_US.UTF-8 RUN yum install -y mariadb-server && bash /opt/init.sh EXPOSE 3306 CMD ["mysqld_safe","--user=root"] docker build -t chinaskillmall-mariadb:v1.1 -f Dockerfile-mariadb .在master 节 点 上 编 写 /root/mall-swarm/Dockerfile-redis 文 件 构 建chinaskillmall-redis:v1.1 镜像,具体要求为
- 基础镜像:centos:centos7.5.1804;
- 作者:Chinaskill;
- 安装 redis 服务;
- 修改配置文件中的bind 127.0.0.1 为 bind 0.0.0.0;
- 设置 redis 免密,并关闭保护模式;
- 开放端口:6379;
- 设置服务开机自启。
[root@master mall-swarm]# vim Dockerfile-redis FROM centos:centos7.5.1804 MAINTAINER Chinaskill RUN rm -rf /etc/yum.repos.d/* ADD ftp.repo /etc/yum.repos.d/ RUN yum install -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"] docker build -t chinaskillmall-redis:v1.1 -f Dockerfile-redis .在 master节点上编 写 /root/mall-swarm/Dockerfile-nacos 文 件构 建chinaskillmall-nacos:v1.1 镜像,具体要求为
- 基础镜像:centos:centos7.5.1804;
- 作者:Chinaskill;
- 安装 jdk 工具和 nacos-server 工具;
- 设置nacos 服务开机自启。
[root@master mall-swarm]# vim nacos-start.sh #!/bin/bash /usr/local/bin/nacos/bin/startup.sh -m standalone tail -f /usr/local/bin/nacos/logs/start.out[root@master mall-swarm]# vim Dockerfile-nacos FROM centos:centos7.5.1804 MAINTAINER Chinaskill ADD nacos-start.sh /opt/ ADD jdk-8u121-linux-x64.tar.gz nacos-server-1.1.0.tar.gz /usr/local/bin/ ENV JAVA_HOME /usr/local/bin/jdk1.8.0_121 EXPOSE 8848 CMD ["/bin/bash","/opt/nacos-start.sh"] docker build -t chinaskillmall-nacos:v1.1 -f Dockerfile-nacos .在 master 节点上安装 node 工具,对 mall-admin-web 项目进行打包,然后编写/root/mall-swarm/Dockerfile-nginx 文件构建 chinaskillmall-nginx:v1.1 镜像,具体要求为
- 基础镜像:centos:centos7.5.1804;
- 作者:Chinaskill;
- 安装nginx 服务;
- 将 mall-admin-web 项目打包后的文件拷贝到/usr/share/nginx/html 目录下;
- 设置nginx 服务开机自启。
[root@master mall-swarm]# tar -zxvf mall-admin-web.tar.gz [root@master mall-swarm]# vim mall-admin-web/config/prod.env.js 'use strict' module.exports = { NODE_ENV: '"production"', BASE_API: '"http://10.0.0.10:8201/mall-admin"' } [root@master mall-swarm]# tar -zxvf node-v6.17.1-linux-x64.tar.gz -C /usr/local/ mv /usr/local/node-v6.17.1-linux-x64 /usr/local/node [root@master mall-swarm]# vim /etc/profile export NODE_HOME=/usr/local/node export PATH=$NODE_HOME/bin:$PATH [root@master mall-swarm]# source /etc/profile [root@master mall-swarm]# node -v;npm -v [root@master mall-swarm]# cd mall-admin-web [root@master mall-admin-web]# npm run build [root@master mall-admin-web]# mv dist/ ../;cd ..[root@master mall-swarm]# vim Dockerfile-nginx FROM centos:centos7.5.1804 MAINTAINER Chinaskill RUN rm -rf /etc/yum.repos.d/* ADD ftp.repo /etc/yum.repos.d/ RUN yum -y install nginx ADD dist/ /usr/share/nginx/html/ EXPOSE 80 CMD ["nginx","-g","daemon off;"] docker build -t chinaskillmall-nginx:v1.1 -f Dockerfile-nginx .在 master 节点上编写/root/mall-swarm/docker-compose.yaml 文件,具体要求为
- 容器 1 名称:chinaskillmall-admin;镜像:mall/mall-admin:1.0-SNAPSHOT;端口映射:8080:8080;
- 容器 2 名称: chinaskillmall-auth;镜像:mall/mall-auth:1.0-SNAPSHOT;端口映射:8401:8401;
- 容器 3 名称:chinaskillmall-gateway;镜像:mall/mall-gateway:1.0-SNAPSHOT;端口映射:8201:8201;
- 容器 4 名称:chinaskillmall-mysql;镜像:chinaskillmall-mariadb:v1.1;端口映射:3306:3306;
- 容器 5 名称:chinaskillmall-nacos;镜像:chinaskillmall-nacos:v1.1;端口映射:8848:8848;
- 容器 6 名称:chinaskillmall-nginx;镜像:chinaskillmall-nginx:v1.1;端口映射:8888:80;
- 容器 7 名称:chinaskillmall-redis;镜像:chinaskillmall-redis:v1.1;端口映射:6379:6379。
[root@master mall-swarm]# docker load -i images/mall_mall-admin_1.0-SNAPSHOT.tar && docker load -i images/mall_mall-auth_1.0-SNAPSHOT.tar && docker load -i images/mall_mall-gateway_1.0-SNAPSHOT.tar[root@master mall-swarm]# vim docker-compose.yaml version: "3" services: mysql: container_name: mysql image: chinaskillmall-mariadb:v1.1 restart: always ports: - 3306:3306 redis: container_name: mall-redis image: chinaskillmall-redis:v1.1 ports: - 6379:6379 nginx: container_name: mall-nginx image: chinaskillmall-nginx:v1.1 ports: - 8888:80 nacos-registry: container_name: nacos-registry image: chinaskillmall-nacos:v1.1 ports: - 8848:8848 mall-admin: container_name: mall-admin image: mall/mall-admin:1.0-SNAPSHOT ports: - 8080:8080 links: - mysql:db mall-gateway: container_name: mall-gateway image: mall/mall-gateway:1.0-SNAPSHOT ports: - 8201:8201 links: - redis:redis - nacos-registry:nacos-registry mall-auth: container_name: mall-auth image: mall/mall-auth:1.0-SNAPSHOT ports: - 8401:8401 links: - nacos-registry:nacos-registry
admin密码是 macro123
Creating network "docker_default" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-d0136fb5e044 -j RETURN: iptables: No chain/target/match by that name.
(exit status 1))
解决方案:https://github.com/wodby/docker4drupal/issues/211#issuecomment-451085587
将docker重新启动即可
systemctl restart docker
ChinaSkillsMall-3(GZ-2021040/4.5)
将云梦公司开发的基于微服务架构的web应用系统ChinaSkillsMall重新实现全容器化部署,原微服务架构的Web应用系统各模块功能及系统架构如下:
| 模块 | 使用技术 | 备注 |
|---|---|---|
| mall.sql | MySQL | 网站的数据库 |
| dist目录 | Nginx | 网站的前端项目 |
| mall-shopping | web项目 | 8081端口,商品/购物车/首页渲染等交互 |
| mall-user | 8082端口,提供用户相关的交互,如登录、注册、个人中心等 | |
| user-provider | 后端服务 | 提供用户相关服务 |
| shopping-provider | 提供购物车、推荐商品、商品等服务 |

请将MySQL数据库组件、Redis组件、Kafka组件、Zookeeper组件按照要求进行容器化。
编写Dockerfile制作数据库MySQL镜像,生成镜像名为mall-mysql:v1.1,并推送其到私有仓库。具体要求如下: (2分)
基于centos:7.5.1804基础镜像;
指定作者为Chinaskill;
安装mariadb数据库,并使用root用户进行数据库初始化;设置数据库支持UTF-8编码;设定root用户的密码为123456,并给root用户赋予远程访问的权限;
创建数据库mall并使用mall数据库,导入malldb.sql;
设置服务自启动。
编写Dockerfile制作Redis镜像,生成镜像名为mall-redis:v1.1,并推送其到私有仓库。具体要求如下:(2分)
基于centos:centos7.5.1804基础镜像;
指定作者为Chinaskill;
修改配置文件中的bind 127.0.0.1为bind 0.0.0.0;
设置Redis免密,并关闭保护模式;
开放端口:6379;
设置服务开机自启。
编写Dockerfile制作Kafka镜像,生成镜像名为mall-kafka:v1.1,并推送其到私有仓库。具体要求如下:(2分)
基于centos:centos7.5.1804基础镜像;
指定作者为Chinaskill;
开放端口:9092;
设置服务开机自启。
编写Dockerfile制作ZooKeeper镜像,生成镜像名为mall-zookeeper:v1.1,并推送其到私有仓库。具体要求如下: (2分)
基于centos:7.5.1804基础镜像;
指定作者为Chinaskill;
开放端口:2181;
设置服务开机自启。
创建mall.yaml文件,使用上述镜像编排部署ChinaSkillsMall应用系统。(2分)
ChinaSkillsMall-4(GZ-2021040/5.4)
4.5+读写分离
将云梦公司开发的基于微服务架构的web应用系统ChinaSkillsMall实现全容器化部署,原微服务架构的Web应用系统各模块功能及系统架构如下:
| 模块 | 使用技术 | 备注 |
|---|---|---|
| mall.sql | Mysql | 网站的数据库 |
| dist目录 | Nginx | 网站的前端项目 |
| mall-shopping | web项目 | 8081端口,商品/购物车/首页渲染等交互 |
| mall-user | 8082端口,提供用户相关的交互,如登录、注册、个人中心等 | |
| user-provider | 后端服务 | 提供用户相关服务 |
| shopping-provider | 提供购物车、推荐商品、商品等服务 |

请将MySQL数据库组件、Redis组件、Kafka组件、Zookeeper组件按照要求进行容器化。
编写Dockerfile制作数据库MySQL镜像,生成镜像名为mall-mysql:v1.1,并基于该镜像编排部署MySQL + MyCat集群实现数据库读写分离。 (2分)
编写Dockerfile制作Redis镜像,生成镜像名为mall-redis:v1.1,并推送其到私有仓库。具体要求如下:(2分)
基于centos7.5.1804基础镜像;
指定作者为Chinaskill;
修改配置文件中的bind 127.0.0.1为bind 0.0.0.0;
设置Redis免密,并关闭保护模式;
开放端口:6379;
设置服务开机自启。
编写Dockerfile制作Kafka镜像,生成镜像名为mall-kafka:v1.1,并推送其到私有仓库。具体要求如下:(2分)
基于centos7.5.1804基础镜像;
指定作者为Chinaskill;
开放端口:9092;
设置服务开机自启。
编写Dockerfile制作ZooKeeper镜像,生成镜像名为mall-zookeeper:v1.1,并推送其到私有仓库。具体要求如下: (2分)
基于centos:7.5.1804基础镜像;
指定作者为Chinaskill;
开放端口:2181;
设置服务开机自启。
创建mall.yaml文件,使用上述镜像编排部署ChinaSkillsMall应集群应用商城。(2分)
ChinaskillsMall-5(GZ-2021040/6T)
将该公司开发的基于微服务架构的web应用系统Chinaskillmall实现全容器化部署,Chinaskillmall应用系统架构图如下:

| 模块 | 使用技术 | 备注 |
|---|---|---|
| gpmall.sql | MySQL | 网站的数据库 |
| dist目录 | Nginx | 网站的前端项目 |
| gpmall-shopping | web项目 | 8081端口,商品/购物车/首页渲染等交互 |
| gpmall-user | 8082端口,提供用户相关的交互,如登录、注册、个人中心等 | |
| user-provider | 后端服务 | 提供用户相关服务 |
| shopping-provider | 提供购物车、推荐商品、商品等服务 |
请将MySQL数据库组件、Kafka组件和Chinaskillmall前端Nginx组件按照要求进行容器化,其它组件已经实现容器化,直接从仓库中拉取镜像运行容器即可(chinaskillmall-redis:v1.1、chinaskillmall-zookeeper:v1.1)。
编写Dockerfile制作数据库MySQL镜像,生成镜像名为chinaskillmall-mysql:v1.1,并推送其到私有仓库。具体要求如下:
基于centos:7.5.1804基础镜像;
指定作者为Chinaskill;
安装mariadb数据库,并使用root用户进行数据库初始化;设置数据库支持UTF-8编码;设定root用户的密码为123456,并给root用户赋予远程访问的权限;
创建数据库chinaskillmall并使用chinaskillmall数据库,导入chinaskillmalldb.sql;
设置服务自启动。
编写Dockerfile制作Kafka镜像,生成镜像名为chinaskillmall-kafka:v1.1,并推送其到私有仓库。具体要求如下:
基于centos:centos7.5.1804基础镜像;
指定作者为Chinaskill;
开放端口:9092;
设置服务开机自启。
编写Dockerfile制作Web应用系统Nginx镜像,生成镜像名为chinaskillmall-nginx:v1.1,并推送其到私有仓库。具体要求如下:
基于centos:7.5.1804基础镜像;
指定作者为Chinaskill;
安装Nginx服务,将提供的dist目录传到镜像内,并将dist目录内的前端文件复制到nginx的工作目录;
暴露80端口;
设置服务自启动。
创建chinaskillmall.yaml文件,使用上述镜像编排部署Chinaskillmall应用系统。
ChinaSkillsMall-6(GZ-2021040/7T)
将该公司开发的基于微服务架构的web应用系统Chinaskillmall实现全容器化部署,Chinaskillmall应用系统架构图如下:

| 模块 | 使用技术 | 备注 |
|---|---|---|
| gpmall.sql | Mysql | 网站的数据库 |
| dist目录 | Nginx | 网站的前端项目 |
| gpmall-shopping | web项目 | 8081端口,商品/购物车/首页渲染等交互 |
| gpmall-user | 8082端口,提供用户相关的交互,如登录、注册、个人中心等 | |
| user-provider | 后端服务 | 提供用户相关服务 |
| shopping-provider | 提供购物车、推荐商品、商品等服务 |
请将MySQL数据库组件、Redis组件和Zookeeper组件按照要求进行容器化,其它组件已经实现容器化,直接从仓库中拉取镜像运行容器即可(chinaskillmall-kafka:v1.1、chinaskillmall-nginx:v1.1)。
编写Dockerfile制作数据库MySQL镜像,生成镜像名为chinaskillmall-mysql:v1.1,并推送其到私有仓库。具体要求如下:
基于centos:7.5.1804基础镜像;
指定作者为Chinaskill;
安装mariadb数据库,并使用root用户进行数据库初始化;设置数据库支持UTF-8编码;设定root用户的密码为123456,并给root用户赋予远程访问的权限;
创建数据库chinaskillmall并使用chinaskillmall数据库,导入chinaskillmalldb.sql;
开放3306端口;
设置服务自启动。
编写Dockerfile制作Redis镜像,生成镜像名为chinaskillmall-redis:v1.1,并推送其到私有仓库。具体要求如下:
基于centos:centos7.5.1804基础镜像;
指定作者为Chinaskill;
修改配置文件中的bind 127.0.0.1为bind 0.0.0.0;
设置Redis免密,并关闭保护模式;
开放端口:6379;
设置服务开机自启。
编写Dockerfile制作ZooKeeper镜像,生成镜像名为chinaskillmall-zookeeper:v1.1,并推送其到私有仓库。具体要求如下:
基于centos:7.5.1804基础镜像;
指定作者为Chinaskill;
开放端口:2181;
设置服务开机自启。
创建chinaskillmall.yaml文件,使用上述镜像编排部署Chinaskillmall应用系统。
ChinaSkillsMall-7(GZ-2021040/8T)
将该公司开发的基于微服务架构的web应用系统Chinaskillmall实现全容器化部署,Chinaskillmall应用系统架构图如下:

| 模块 | 使用技术 | 备注 |
|---|---|---|
| gpmall.sql | Mysql | 网站的数据库 |
| dist目录 | Nginx | 网站的前端项目 |
| gpmall-shopping | web项目 | 8081端口,商品/购物车/首页渲染等交互 |
| gpmall-user | 8082端口,提供用户相关的交互,如登录、注册、个人中心等 | |
| user-provider | 后端服务 | 提供用户相关服务 |
| shopping-provider | 提供购物车、推荐商品、商品等服务 |
请将Redis组件、ZooKeeper组件和Kafka组件按照要求进行容器化,其它组件已经实现容器化,直接从仓库中拉取镜像运行容器即可(chinaskillmall-mysql:v1.1、chinaskillmall-nginx:v1.1)。
编写Dockerfile制作Redis镜像,生成镜像名为chinaskillmall-redis:v1.1,并推送其到私有仓库。具体要求如下:
基于centos:centos7.5.1804基础镜像;
指定作者为Chinaskill;
修改配置文件中的bind 127.0.0.1为bind 0.0.0.0;
设置Redis免密,并关闭保护模式;
开放端口:6379;
设置服务开机自启。
编写Dockerfile制作ZooKeeper镜像,生成镜像名为chinaskillmall-zookeeper:v1.1,并推送其到私有仓库。具体要求如下:
基于centos:7.5.1804基础镜像;
指定作者为Chinaskill;
开放端口:2181;
设置服务开机自启。
编写Dockerfile制作Kafka镜像,生成镜像名为chinaskillmall-kafka:v1.1,并推送其到私有仓库。具体要求如下:
基于centos:centos7.5.1804基础镜像;
指定作者为Chinaskill;
开放端口:9092;
设置服务开机自启。
创建chinaskillmall.yaml文件,使用上述镜像编排部署Chinaskillmall应用系统。
ChinaSkillsMall-8(GZ-2021040/9T)
将该公司开发的基于微服务架构的web应用系统Chinaskillmall实现全容器化部署,Chinaskillmall应用系统架构图如下:

| 模块 | 使用技术 | 备注 |
|---|---|---|
| gpmall.sql | Mysql | 网站的数据库 |
| dist目录 | Nginx | 网站的前端项目 |
| gpmall-shopping | web项目 | 8081端口,商品/购物车/首页渲染等交互 |
| gpmall-user | 8082端口,提供用户相关的交互,如登录、注册、个人中心等 | |
| user-provider | 后端服务 | 提供用户相关服务 |
| shopping-provider | 提供购物车、推荐商品、商品等服务 |
请将MySQL数据库组件、Kafka组件和ZooKeeper组件按照要求进行容器化,其它组件已经实现容器化,直接从仓库中拉取镜像运行容器即可(chinaskillmall-redis:v1.1、chinaskillmall-nginx:v1.1)。
编写Dockerfile制作数据库MySQL镜像,生成镜像名为chinaskillmall-mysql:v1.1,并推送其到私有仓库。具体要求如下:
基于centos:7.5.1804基础镜像;
指定作者为Chinaskill;
安装mariadb数据库,并使用root用户进行数据库初始化;设置数据库支持UTF-8编码;设定root用户的密码为123456,并给root用户赋予远程访问的权限;
创建数据库chinaskillmall并使用chinaskillmall数据库,导入chinaskillmalldb.sql;
开放3306端口;
设置服务自启动。
编写Dockerfile制作ZooKeeper镜像,生成镜像名为chinaskillmall-zookeeper:v1.1,并推送其到私有仓库。具体要求如下:
基于centos:7.5.1804基础镜像;
指定作者为Chinaskill;
开放端口:2181;
设置服务开机自启。
编写Dockerfile制作Kafka镜像,生成镜像名为chinaskillmall-kafka:v1.1,并推送其到私有仓库。具体要求如下:
基于centos:centos7.5.1804基础镜像;
指定作者为Chinaskill;
开放端口:9092;
设置服务开机自启。
创建chinaskillmall.yaml文件,使用上述镜像编排部署Chinaskillmall应用系统。
ChinaSkillsSA 情绪分析(GZ-2021040/3)
将云梦公司开发的基于微服务架构的ChinaSkillsSA智能文本的情绪分析(Sentiment Analysis)的系统实现全容器化部署,ChinaSkillsSA智能分析系统应用系统架构如图1所示,ChinaSkillsSA智能分析系统说明如表2所示。

图1 ChinaSkillsSA智能分析系统架构图
表2 ChinaSkillsSA智能分析系统说明
| 模块 | 使用技术 | 说明 |
|---|---|---|
| sa-frontend | Node.js | 前端项目,使用 Vue.js 开发。 |
| sa-logic | Python Flask | 输入文本句子的情绪分析微服务,使用 Python 开发。 |
| sa-webapp | Spring Cloud | Web服务,处理 sa-frontend 请求,调用 sa-logic 微服务,使用Java语言开发。 |
将sa-frontend组件、sa-logic组件和sa-webapp组件按照要求进行容器化。
准备工作 tar -xf Sentiment-Analyzer.tar.gz -C /opt
vi ftp.repo
[centos]
name=centos
baseurl=ftp://192.168.100.101/centos
gpgcheck=0
enable=1
[gpmall]
name=gpmall
baseurl=ftp://192.168.100.101/sentiment-analyzer/sa-repo
enabled=1
gpgcheck=0
1.在master节点上编写/root/sentiment-analyzer/Dockerfile-logic文件构建chinaskillsa-logic:v1.0镜像,具体要求为
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)安装Pyhton3;
(4)使用pip安装提供的离线模块包。
完成后构建镜像,并提交master节点的用户名、密码和IP到答题框。
mkdir sentiment-analyzer && cd sentiment-analyzer && vi Dockerfile-logic
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
WORKDIR /app
ADD python-packages.tar.gz .
COPY app.py .
COPY requirements.txt .
RUN yum -y install python3* && pip3 install -r requirements.txt --no-index --find-links=python-packages
EXPOSE 5000
CMD ["python3","app.py"]
cp -frv /opt/sentiment-analyzer/sa-logic/* /root/sentiment-analyzer/
docker build -t chinaskillsa-logic:v1.0 -f Dockerfile-logic .
2.在master节点上编写/root/sentiment-analyzer/Dockerfile-webapp文件构建chinaskillsa-webapp:v1.1镜像,具体要求为
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)安装go工具;
(4)使用go构建webapp项目;
(5)开放8080端口。
完成后构建镜像,并提交master节点的用户名、密码和IP到答题框。
vi Dockerfile-webapp
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
WORKDIR /app
ADD go-packages.tar.gz .
RUN yum -y install go && mv go /root/ && go mod download && go build -o webapp .
EXPOSE 8080
CMD ["./webapp"]
cp /opt/sentiment-analyzer/sa-webapp/go-packages.tar.gz /root/sentiment-analyzer/
docker build -t chinaskillsa-webapp:v1.1 -f Dockerfile-webapp .
3.在master节点上编写/root/sentiment-analyzer/Dockerfile-frontend文件构建chinaskillsa-frontend:v1.1镜像,具体要求为
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)安装nodejs工具及nginx;
(4)开放端口:80;
(5)设置nginx开机自启。
完成后构建镜像,并提交master节点的用户名、密码和IP到答题框。
vi Dockerfile-frontend
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
ENV VUE_APP_API_HOST http://192.168.100.101:9002
WORKDIR /app
ADD sa-frontend.tar.gz .
RUN yum -y install nginx nodejs && rm -rf /usr/share/nginx/html/* \
&& npm run build && mv dist/* /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
cp /opt/sentiment-analyzer/sa-frontend/sa-frontend.tar.gz /root/sentiment-analyzer/
docker build -t chinaskillsa-frontend:v1.1 -f Dockerfile-frontend .
4.在master节点上编写/root/sentiment-analyzer/docker-compose.yaml文件,具体要求为
(1)容器1名称:sa-logic;镜像:chinaskillsa-logic:v1.1;端口映射:9001:5000;
(2)容器2名称:sa-webapp;镜像:chinaskillsa-webapp:v1.1;端口映射:9002:8080;
(3)容器3名称:sa-frontend;镜像:chinaskill-frontend:v1.1;端口映射:9003:80。
完成后编排部署情感分析系统,并能对输入的语句进行情感分析。然后提交master节点的用户名、密码和IP到答题框。
vi docker-compose.yaml
version: "3"
services:
logic:
container_name: sa-logic
image: chinaskillsa-logic:v1.0
ports:
- "9001:5000"
webapp:
depends_on:
- logic
container_name: sa-webapp
image: chinaskillsa-webapp:v1.1
ports:
- "9002:8080"
environment:
API_HOST: http://sa-logic:5000
frontend:
container_name: sa-frontend
image: chinaskillsa-frontend:v1.1
ports:
- "9003:80"
docker-compose up -d
ChinaSkillsActionApp(GZ-2021040/2)
将云梦公司开发的基于微服务架构的ChinaSkillsActionApp活动管理微信小程序平台实现全容器化部署,ChinaSkillsActionApp应用系统架构图如下:
| 模块 | 使用技术 | 说明 |
|---|---|---|
| action_frontend | Node.js | 活动管理的前端项目微服务,使用 uni-app 开发。 |
| action_management | Spring Cloud | 活动管理的主要逻辑,基于Java实现的Spring Cloud微服务。 |
| action_admin | Spring Cloud | 活动管理的后台管理,基于Java实现的Spring Cloud微服务。 |

请将MySQL数据库组件、Redis组件和Zookeeper组件按照要求进行容器化。
编写Dockerfile制作数据库MySQL镜像,生成镜像名为action-app-mysql:v1.1,并推送其到私有仓库。具体要求如下: (2分)
- 基于centos:7.5.1804基础镜像;
- 指定作者为Chinaskill;
- 安装mariadb数据库,并使用root用户进行数据库初始化;设置数据库支持UTF-8编码;设定root用户的密码为123456,并给root用户赋予远程访问的权限;
- 创建数据库action-app并使用applet数据库,导入action-appdb.sql;
- 开放3306端口;
- 设置服务自启动。
cat > init.sh <<EOF
#!/bin/bash
mysql_install_db --user=root
mysqld_safe --user=root &
sleep 8
mysqladmin -u root password 'root'
mysql -uroot -proot -e "grant all on *.* to 'reader'@'%' identified by '123456';flush privileges;"
mysql -uroot -proot -e "create database action-app;use action-app;source /opt/action-appdb.sql;"
EOF
cat > dockerfile-mysql <<EOF
FROM centos:centos7.5.1804
MAINTAINER chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
ADD action-appdb.sql init.sh /opt
ENV LC_ALL en_US.UTF-8
RUN yum install -y mariadb-server && bash /opt/init.sh
EXPOSE 3306
CMD ["mysqld_safe","--user=root"]
EOF
docker build -t action-app-mysql:v1.1 -f dockerfile-mysql .
docker tag action-app-mysql:v1.1 192.168.100.101/library/action-app-mysql:v1.1
docker push 192.168.100.101/library/action-app-mysql:v1.1
编写Dockerfile制作Redis镜像,生成镜像名为action-app-redis:v1.1,并推送其到私有仓库。具体要求如下:(2分)
- 基于centos:centos7.5.1804基础镜像;
- 指定作者为Chinaskill;
- 修改配置文件中的bind 127.0.0.1为bind 0.0.0.0;
- 设置Redis免密,并关闭保护模式;
- 开放端口:6379;
- 设置服务开机自启。
cat > dockerfile-redis <<EOF
FROM centos:centos7.5.1804
MAINTAINER chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
RUN yum install -y redis*
RUN sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /etc/redis.conf && sed -i "s/protected-mode yes/protected-mode no/g" /etc/redis.conf
EXPOSE 6379
CMD ["redis-server","/etc/redis.conf"]
EOF
docker build -t action-app-redis:v1.1 -f dockerfile-redis .
docker tag action-app-redis:v1.1 192.168.100.101/library/action-app-redis:v1.1
docker push 192.168.100.101/library/action-app-redis:v1.1
编写Dockerfile制作ZooKeeper镜像,生成镜像名为action-app-zookeeper:v1.1,并推送其到私有仓库。具体要求如下: (2分)
- 基于centos:7.5.1804基础镜像;
- 指定作者为Chinaskill;
- 开放端口:2181;
- 设置服务开机自启。
cat > dockerfile-zookeeper <<EOF
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
COPY ftp.repo /etc/yum.repos.d/ftp.repo
EXPOSE 2181
ADD zookeeper-3.4.14.tar.gz /opt
RUN yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel \
&& mv /opt/zookeeper-3.4.14/conf/zoo_sample.cfg /opt/zookeeper-3.4.14/conf/zoo.cfg
CMD ["sh","-c","/opt/zookeeper-3.4.14/bin/zkServer.sh start && tail -f /etc/shadow"]
EOF
docker build -t action-app-zookeeper:v1.1 -f dockerfile-zookeeper .
docker tag action-app-zookeeper:v1.1 192.168.100.101/library/action-app-zookeeper:v1.1
docker push 192.168.100.101/library/action-app-zookeeper:v1.1
- 创建action_app.yaml文件,使用上述镜像编排部署ChinaSkillsActionApp应用系统。(4分)
version: "3.3"
services:
mysql.mall:
container_name: mall-mysql
image: action-app-mysql:v1.1
ports:
- 13306:3306
redis.mall:
container_name: mall-redis
image: action-app-redis:v1.1
ports:
- 16379:6379
zookeeper.mall:
container_name: mall-zookeeper
image: action-app-zookeeper:v1.1
ports:
- 12181:2181
kafka.mall:
container_name: mall-kafka
image: chinaskill-kafka:v1.1
ports:
- 19092:9092
nginx-mall:
depends_on:
- mysql.mall
- redis.mall
- zookeeper.mall
- kafka.mall
container_name: mall-nginx
image: chinaskill-nginx:v1.1
ports:
- 83:80
- 443:443
command: ["sh","-c","/root/setup.sh && nginx && tail -f /etc/shadow"]
GPMall商城(GZ-2021040/10)
| 模块 | 使用技术 | 备注 |
|---|---|---|
| gpmall.sql | Mysql | 网站的数据库 |
| dist目录 | Nginx | 网站的前端项目 |
| gpmall-shopping | web项目 | 8081端口,商品/购物车/首页渲染等交互 |
| gpmall-user | 8082端口,提供用户相关的交互,如登录、注册、个人中心等 | |
| user-provider | 后端服务 | 提供用户相关服务 |
| shopping-provider | 提供购物车、推荐商品、商品等服务 |

准备工作 将gpmall-single.tar.gz上传至服务器,将文件解压到/opt
tar -zxvf gpmall-single.tar.gz
rm -rf gpmall-single.tar.gz && mv gpmall-single /opt
配置yum源
vi ftp.repo
[centos]
name=centos
baseurl=ftp://192.168.100.101/centos
gpgcheck=0
enable=1
[gpmall]
name=gpmall
baseurl=ftp://192.168.100.101/gpmall-single/gpmall-repo
enabled=1
gpgcheck=0
【题目1】容器化部署Redis
在master节点上编写/root/redis/Dockerfile文件,基于提供的软件包gpmall-single.tar构建chinaskill-redis:v1.1镜像,具体要求如下:
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)修改配置文件中的bind 127.0.0.1为bind 0.0.0.0;
(4)设置Redis免密,并关闭保护模式;
(5)开放端口:6379;
(6)设置服务开机自启。
mkdir redis&&cp ftp.repo redis/&&cd redis/&&vi Dockerfile
RUN sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis.conf
RUN sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
ENTRYPOINT ["/usr/bin/redis-server", "/etc/redis.conf"]
***********************use****************************
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
RUN yum -y install redis*
RUN sed -i 's/bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis.conf && sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
EXPOSE 6379
CMD ["redis-server","/etc/redis.conf"]
docker build -t chinaskill-redis:v1.1 .
【题目2】容器化部署MariaDB
在master节点上编写/root/mariadb/Dockerfile文件,基于提供的软件包gpmall-single.tar构建chinaskill-mariadb:v1.1镜像,具体要求如下:
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)设置数据库密码:123456;
(4)创建数据库gpmall并导入数据库文件gpmall.sql;
(5)设置字符编码:UTF-8;
(6)开放端口:3306;
(7)设置服务开机自启。
mkdir mariadb
cp ftp.repo /opt/gpmall-single/gpmall.sql mariadb/
cd mariadb/
vi Dockerfile
**************************************use******************************
FROM centos:centos7.5.1804
MAINTAINER chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
ADD gpmall.sql /opt/
ADD init.sh /opt/
RUN yum -y install mariadb-server
RUN bash /opt/init.sh
ENV LC_ALL en_US.UTF-8
EXPOSE 3306
CMD ["mysqld_safe","--user=root"]
vi init.sh
#!/bin/bash
mysql_install_db --user=root
mysqld_safe --user=root &
sleep 3
mysqladmin -u root password '123456'
mysql -uroot -p123456 -e "grant all privileges on *.* to root@'%' identified by '123456';"
mysql -uroot -p123456 -e "set names utf8;create database gpmall character set utf8;use gpmall;source /opt/gpmall.sql;"
docker build -t chinaskill-mariadb:v1.1 .
【题目3】容器化部署Zookeeper
在master节点上编写/root/zookeeper/Dockerfile文件,基于提供的软件包gpmall-single.tar构建chinaskill-zookeeper:v1.1镜像,具体要求如下:
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)开放端口:2181;
(4)设置服务开机自启。
mkdir zookeeper
cp ftp.repo /opt/gpmall-single/zookeeper-3.4.14.tar.gz zookeeper/
cd zookeeper/
vi Dockerfile
RUN mv /opt/zookeeper-3.4.14/conf/zoo_sample.cfg /opt/zookeeper-3.4.14/conf/zoo.cfg
ENTRYPOINT ["/opt/zookeeper-3.4.14/bin/zkServer.sh", "start-foreground"]
****************************************************************use
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
COPY ftp.repo /etc/yum.repos.d/ftp.repo
EXPOSE 2181
ADD zookeeper-3.4.14.tar.gz /opt
RUN yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel \
&& mv /opt/zookeeper-3.4.14/conf/zoo_sample.cfg /opt/zookeeper-3.4.14/conf/zoo.cfg
CMD ["sh","-c","/opt/zookeeper-3.4.14/bin/zkServer.sh start && tail -f /etc/shadow"]
docker build -t chinaskill-zookeeper:v1.1 .
【题目4】容器化部署Kafka
在master节点上编写/root/kafka/Dockerfile文件,基于提供的软件包gpmall-single.tar构建chinaskill-kafka:v1.1镜像,具体要求如下:
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)开放端口:9092;
(4)设置服务开机自启。
mkdir kafka
cp ftp.repo kafka/
cp /opt/gpmall-single/zookeeper-3.4.14.tar.gz /opt/gpmall-single/kafka_2.11-1.1.1.tgz kafka/
cd kafka/
vi Dockerfile
*************************************************use
FROM centos:centos7.5.1804
MAINTAINER chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
ADD zookeeper-3.4.14.tar.gz /opt/
ADD kafka_2.11-1.1.1.tgz /opt/
EXPOSE 9092
RUN yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel \
&& mv /opt/zookeeper-3.4.14/conf/zoo_sample.cfg /opt/zookeeper-3.4.14/conf/zoo.cfg
CMD ["sh","-c","/opt/zookeeper-3.4.14/bin/zkServer.sh start && /opt/kafka_2.11-1.1.1/bin/kafka-server-start.sh /opt/kafka_2.11-1.1.1/config/server.properties"]
docker build -t chinaskill-kafka:v1.1 .
【题目5】容器化部署Nginx
在master节点上编写/root/nginx/Dockerfile文件,基于提供的软件包gpmall-single.tar构建chinaskill-nginx:v1.1镜像,具体要求如下:
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)编写/etc/nginx/conf.d/default.conf文件,配置反向代理,将80端口请求转发到8081、8082和8083;
(4)将dist.tar解压并复制到/usr/share/nginx/html/目录下;
(5)开放端口:80、443、8081、8082、8083;
(6)设置服务开机自启。
mkdir nginx
cp -frv ftp.repo /opt/gpmall-single/dist /opt/gpmall-single/*.jar nginx/
cd nginx/
vi Dockerfile
**********************************use********************
FROM centos:centos7.5.1804
MAINTAINER chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
ADD *.jar /root/
ADD setup.sh /root/
RUN yum -y install nginx java-1.8.0-openjdk java-1.8.0-openjdk-devel \
&& sed -i '1a location /shopping { proxy_pass http://127.0.0.1:8081 ;}' /etc/nginx/conf.d/default.conf \
&& sed -i '2a location /user { proxy_pass http://127.0.0.1:8082 ;}' /etc/nginx/conf.d/default.conf \
&& sed -i '3a location /cashier { proxy_pass http://127.0.0.1:8083 ;}' /etc/nginx/conf.d/default.conf \
&& chmod +x /root/setup.sh \
&& rm -rf /usr/share/nginx/html/
EXPOSE 80 443 8081 8082 8083
ADD dist/ /usr/share/nginx/html/
CMD ["nginx","-g","daemon off;"]
cat > setup.sh <<EOF
#!/bin/bash
nohup java -jar /root/shopping-provider-0.0.1-SNAPSHOT.jar &
sleep 5
nohup java -jar /root/user-provider-0.0.1-SNAPSHOT.jar &
sleep 5
nohup java -jar /root/gpmall-shopping-0.0.1-SNAPSHOT.jar &
sleep 5
nohup java -jar /root/gpmall-user-0.0.1-SNAPSHOT.jar &
sleep 5
EOF
docker build -t chinaskill-nginx:v1.1 .
【题目6】编排部署GPMall商城
在master节点上编写/root/chinaskillmall/docker-compose.yaml文件,具体要求如下:
(1)容器1名称:mysql;镜像:chinaskill-mariadb:v1.1;端口映射:3306:3306;
(2)容器2名称:redis;镜像:chinaskill-redis:v1.1;端口映射:6379:6379;
(3)容器3名称:kafka;镜像:chinaskill-kafka:v1.1;端口映射:9092:9092;
(4)容器4名称:zookeeper;镜像:chinaskill-zookeeper:v1.1;端口映射:2181:2181;
(5)容器5名称:nginx;镜像:chinaskill-nginx:v1.1;端口映射:80:80,443:443。
mkdir chinaskillmall
cd chinaskillmall/
vi docker-compose.yaml
version: "3.3"
services:
mysql.mall:
container_name: mall-mysql
image: chinaskill-mariadb:v1.1
ports:
- 13306:3306
redis.mall:
container_name: mall-redis
image: chinaskill-redis:v1.1
ports:
- 16379:6379
zookeeper.mall:
container_name: mall-zookeeper
image: chinaskill-zookeeper:v1.1
ports:
- 12181:2181
kafka.mall:
container_name: mall-kafka
image: chinaskill-kafka:v1.1
ports:
- 19092:9092
nginx-mall:
depends_on:
- mysql.mall
- redis.mall
- zookeeper.mall
- kafka.mall
container_name: mall-nginx
image: chinaskill-nginx:v1.1
ports:
- 83:80
- 443:443
command: ["sh","-c","/root/setup.sh && nginx && tail -f /etc/shadow"]
docker-compose up -d
当用命令jobs查看jar包运行状态或访问网站只显示个标题的时候(如图3-1),那就是4个jar包没起来,没运行成功
执行docker-compose up -d时出现ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule原因是因为防火墙关闭之后需要重启docker服务。
执行:
service docker restart
systemctl restart docker
Pig
云梦公司基于Spring Cloud微服务应用程序框架开发了一套快速开发平台,平台设计灵活可扩展、可移植、可应对高并发需求,并实现了全容器化部署,该平台架构图如下:

主要的技术栈如下表所示:
| 模块 | 说明 |
|---|---|
| MySQL | 读写分离数据库 |
| Redis | 分布式缓存服务 |
| Register | 注册中心、配置中心 |
| Gateway | 动态路由定义 |
| Auth | 授权服务提供 |
| Upms | 通用用户权限管理模块 |
| UI | 前端页面 |
试将MySQL组件、Redis组件、Register组件和nginx组件按照要求进行容器化,其它组件Gateway、Auth、Upms已经实现容器化,直接从仓库中拉取镜像运行容器即可。
\1. 编写Dockerfile文件制作MySQL镜像,生成镜像名micro-mysql:v1.0,基于centos:7.9.2009基础镜像,要求安装MySQL服务,设置初始密码为123456,并设置服务自启动。
\2. 编写Dockerfile文件制作Redis镜像,生成镜像名micro-redis:v1.0,基于centos:7.9.2009基础镜像,安装Redis服务,关闭保护模式,并设置服务自启动。
\3. 编写Dockerfile文件制作Register镜像,生成镜像名micro-register:v1.0,基于centos:7.9.2009基础镜像,安装JDK环境和Register服务,暴露8848端口,并设置服务自启动。
\4. 编写Dockerfile文件制作UI镜像,生成镜像名micro-nginxl:v1.0,基于centos:7.9.2009基础镜像,安装nginx服务,暴露80端口,并设置服务自启动。
\5. 编写docker-compose.yaml文件,使用上面构建的镜像编排部署该快速开发平台。
阶段三:构建并推送镜像
Pig 默认由 7 个微服务,以及 Redis、MySql 等组件构成, 我们可以利用并发任务同时构建所有服务镜像。
| 服务名称 | Dockerfile 路径 | 说明 |
|---|---|---|
| pig-mysql | ./db | 基于官方镜像,并包含初始化db脚本 |
| pig-redis | 无 | 官方镜像,无需构建 |
| pig-job | ./pig-visual/pig-xxl-job-admin | XXL jobadmin 非必须 |
| pig-register | ./pig-register | 基于 Nacos 的服务发现与配置管理 |
| pig-gateway | ./pig-gateway | Spring Cloud 网关 |
| pig-auth | ./pig-auth | 用于用户认证的 Oauth 服务 |
| pig-upms | ./pig-upms/pig-upms-biz | 后台管理 API 服务 |
| pig-monitor | ./pig-visual/pig-monitor | 监控 |
| pig-sentinel | ./pig-visual/pig-sentinel-dashboard | Sentinel Dashboard |
| pig-codegen | ./pig-visual/pig-codegen | 代码生成器API |
vi docker-compose.yaml