在 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 分
在 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 分
在 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 分
在 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 分
在 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