【题目 1】容器化部署 MariaDB[2 分]

在 master 节 点 上 编 写 /root/mall-swarm/Dockerfile-mariadb 文 件 构 建

chinaskillmall-mariadb:v1.1 镜像,具体要求如下:

(1) 基础镜像:centos:centos7.5.1804;

(2) 作者:Chinaskill;

(3) 安装并初始化 mariadb,密码:root;

(4) 设置数据库编码为 UTF-8;

(5) 开放端口:3306

(6) 设置 mariadb 开机自启。

[root@master mall-swarm]# cat ftp.repo 
[centos]
name=centos
baseurl=ftp://192.168.200.10/centos
gpgcheck=0
[mall]
name=mall
baseurl=ftp://192.168.200.10/mall-repo
gpgcheck=0

[root@master mall-swarm]# cat Dockerfile-mariadb 
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
ADD init.sh mall.sql /opt/
RUN yum -y install mariadb-server \
&& bash /opt/init.sh
ENV LC_ALL en_US.UTF-8
EXPOSE 3306
CMD ["mysqld_safe","--user=root"]

[root@master mall-swarm]# cat init.sh  
#!/bin/bash
mysql_install_db --user=root
mysqld_safe --user=root &
sleep 3
mysqladmin -u root password 'root'
mysql -uroot -proot -e "grant all privileges on *.* to reader@'%' identified by '123456';"
mysql -uroot -proot -e "set names utf8;create database mall character set utf8;use mall;source /opt/mall.sql;"

完成后构建镜像,并提交 master 节点的用户名、密码和 IP 到答题框。

1.docker build 容器镜像,返回正确计 1 分

2.启动容器,查看容器内部数据库字符编码,有正确返回计 0.5 分

3.进入容器内部,有正确的数据库表计 0.5 分

【题目 2】容器化部署 Redis[1.5 分]

在 master 节点上编写/root/mall-swarm/Dockerfile-redis 文件构建 chinaskillmall-redis:v1.1

镜像,具体要求如下:

(1) 基础镜像:centos:centos7.5.1804;

(2) 作者:Chinaskill;

(3) 安装 redis 服务;

(4) 修改配置文件中的 bind 127.0.0.1 为 bind 0.0.0.0;

(5) 设置 redis 免密,并关闭保护模式;

(6) 开放端口:6379;

(7)设置服务开机自启。

[root@master mall-swarm]# cat 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 -y install redis \
&& 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"]

完成后构建镜像,并提交 master 节点的用户名、密码和 IP 到答题框。

1.docker build 构建镜像,有正确的返回计 0.4 分

2.启动容器,进入容器查看 redis 的 info 信息,有 connected_clients:1 计 0.5 分

3.进入容器查看配置文件,取消保护模式计 0.6 分

【题目 3】容器化部署 Nacos-Registry[2 分]

在 master 节 点 上 编 写 /root/mall-swarm/Dockerfile-nacos 文 件 构 建 chinaskillmall-nacos:v1.1 镜像,具体要求如下:

(1) 基础镜像:centos:centos7.5.1804;

(2) 作者:Chinaskill;

(3) 安装 jdk 工具和 nacos-server 工具;

(4) 设置 nacos 服务开机自启。

[root@master mall-swarm]# cat Dockerfile-nacos
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
ADD jdk-8u121-linux-x64.tar.gz nacos-server-1.1.0.tar.gz /usr/local/bin/
ADD start.sh /root/
RUN chmod +x /root/start.sh
ENV JAVA_HOME /usr/local/bin/jdk1.8.0_121
EXPOSE 8848
CMD ["/bin/bash","/root/start.sh"]

[root@master mall-swarm]# cat start.sh 
#!/bin/bash
/usr/local/bin/nacos/bin/startup.sh -m standalone && tail -f /usr/local/bin/nacos/logs/start.out

完成后构建镜像,并提交 master 节点的用户名、密码和 IP 到答题框。

1.docker build 构建镜像,有正确的返回计 0.6 分

2.启动容器,查看 nacos 首页有三方 css 开始,第三方 js 结束计 1.4 分

【题目 4】容器化部署前端服务[2 分]

在 master 节点上安装 node 工具,对 mall-admin-web 项目进行打包,然后编写

/root/mall-swarm/Dockerfile-nginx 文件构建 chinaskillmall-nginx:v1.1 镜像,具体要求如下:

(1) 基础镜像:centos:centos7.5.1804;

(2) 作者:Chinaskill;

(3) 安装 nginx 服务;

(4) 将 mall-admin-web 项目打包后的文件拷贝到/usr/share/nginx/html 目录下;

(5) 设置 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]# rm -rf dist/
[root@master mall-admin-web]# ls
build   index.html  node_modules  package-lock.json  src
config  LICENSE     package.json  README.md          static
[root@master mall-admin-web]# cat config/prod.env.js 
'use strict'
module.exports = {
  NODE_ENV: '"production"',
  BASE_API: '"http://192.168.200.10:8201/mall-admin"'
}
[root@master mall-admin-web]# npm run build

> mall-admin-web@1.0.0 build /root/mall-swarm/mall-admin-web
> node build/build.js
. . .
. . .
. . .
. . .
Build complete.

  Tip: built files are meant to be served over an HTTP server.
  Opening index.html over file:// won't work.
  
[root@master mall-admin-web]# mv dist /root/mall-swarm/

[root@master mall-swarm]# cat Dockerfile-nginx
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
ADD node-v6.17.1-linux-x64.tar.gz /usr/local/bin/
ENV export NODE_HOME /usr/local/bin/node-v6.17.1-linux-x64
ENV NODE_PATH $NODE_HOME/lib/node_modules
ENV PATH $PATH:$NODE_HOME/bin
RUN yum -y install nginx \
&& rm -rf /usr/share/nginx/html/*
ADD dist /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

完成后构建镜像,并提交 master 节点的用户名、密码和 IP 到答题框。

1.docker build 构建镜像,有正确的返回计 1 分

2.启动容器并进入容器,查看/usr/share/nginx/html/目录下是否存在 index.html,计 0.5 分

3.查看容器内 npm 的版本号是否正确计 0.5 分

【题目 5】编排部署 ChinaSkillsMall 商城[2.5 分]

在 master 节点上编写/root/mall-swarm/docker-compose.yaml 文件,具体要求如下:

(1) 容器 1 名称:chinaskillmall-admin;镜像:mall/mall-admin:1.0-SNAPSHOT;端口映射:8080:8080;

(2) 容器 2 名称: chinaskillmall-auth;镜像:mall/mall-auth:1.0-SNAPSHOT;端口映射:8401:8401;

(3) 容器 3 名称:chinaskillmall-gateway;镜像:mall/mall-gateway:1.0-SNAPSHOT;端口映射:8201:8201;

(4) 容器 4 名称:chinaskillmall-mysql;镜像:chinaskillmall-mariadb:v1.1;端口映射:

3306:3306;

(5) 容器 5 名称:chinaskillmall-nacos;镜像:chinaskillmall-nacos:v1.1;端口映射: 8848:8848;

(6) 容器 6 名称:chinaskillmall-nginx;镜像:chinaskillmall-nginx:v1.1;端口映射: 8888:80;

(7) 容器 7名称:chinaskillmall-redis;镜像:chinaskillmall-redis:v1.1;端口映射:

6379:6379。

version: "3.3"
services:
  chinaskillmall-admin:
    container_name: chinaskillmall-admin
    image: mall/mall-admin:1.0-SNAPSHOT
    ports:
    - 8080:8080
  chinaskillmall-auth:
    container_name: chinaskillmall-auth
    image: mall/mall-auth:1.0-SNAPSHOT
    ports:
    - 8401:8401
  chinaskillmall-gateway:
    container_name: chinaskillmall-gateway
    image: mall/mall-gateway:1.0-SNAPSHOT
    ports:
    - 8201:8201
  db:
    container_name: chinaskillmall-mysql
    image: chinaskill-mariadb:v1.1
    ports:
    - 3306:3306
  nacos-registry:
    container_name: chinaskillmall-nacos
    image: chinaskill-nacos:v1.1 
    ports:
    - 8848:8848
  nginx:
    container_name: chinaskillmall-nginx
    image: chinaskill-nginx:v1.1
    ports:
    - 8888:80
  redis:
    container_name: chinaskillmall-redis
    image: chinaskill-redis:v1.1
    ports:
    - 6379:6379 

完成后编排部署 ChinaSkillsMall 商城。然后提交 master 节点的用户名、密码和 IP 到答

题框。

1.使用 docker-compose ps 命令查看所有容器是否正常启动,计 1 分

2.查看商城页面,是否有正确的返回计 1.5 分

[root@master mall-swarm]# cat Dockerfile-rabbitmq 
FROM centos:centos7.5.1804
MAINTAINER Chinaskill
RUN rm -rf /etc/yum.repos.d/*
ADD ftp.repo /etc/yum.repos.d/
ADD rabbitmq.sh /opt/
RUN yum -y install rabbitmq-server
EXPOSE 5672 15672
CMD ["/bin/bash","/opt/rabbitmq.sh"]

rabbitmq:
    container_name: chinaskill-rabbitmq
    image: chinaskill-rabbitmq:v1.1
    ports:
    - 5672:15672
    
[root@master mall-swarm]# cat rabbitmq.sh 
#!/bin/bash
/usr/lib/rabbitmq/bin/rabbitmq-server restart 
sleep 5s
/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
/usr/lib/rabbitmq/bin/rabbitmq-server restart   
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐