基础环境准备:

  1. 至少需要两台装有docker的主机
  2. 关闭防火墙,selinux,iptables等功能
  3. 开启vsftpd功能和共享目录
  4. mall-repo文件已到共享目录下面

    过程:

    1.生成所需镜像
    2.容器化部署前端服务
    2.编写docker-compose文件

    文件结构:

    看个人怎么安排文件的存放位置,我弄得比较随便下面展示我的
    image.png

    体系介绍:

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

image.png

1.构建mariadb镜像

题目要求是:
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)安装并初始化mariadb,密码:root;
(4)设置数据库编码为UTF-8;
(5)开放端口:3306 #注意端口冲突
(6)设置mariadb开机自启。
# 在dockerfile中需要有yum的repo文件(local.repo文件)和用来初始化数据库并导入数据的命令(init.sh文件)
image.png

(1)编写mariadb的dockerfile

  1. # vi dockerfile
  2. FROM centos:centos7.5.1804
  3. MAINTAINER jing
  4. RUN rm -rf /etc/yum.repos.d/*
  5. COPY local.repo /etc/yum.repos.d/
  6. RUN yum install -y mariadb-server
  7. COPY init.sh /root/
  8. COPY mall.sql /root
  9. RUN chmod +x /root/init.sh
  10. ENV LC_ALL en_US.UTF-8
  11. RUN /root/init.sh
  12. EXPOSE 3066
  13. CMD ["mysqld_safe","--user=root"]

(2)编写local.reop文件

在使用ftp时要保证在宿主机上vsftpd功能以开启且设置好了/opt的共享目录和已将文件解压传递到/opt/下面
image.png

  1. # vi local.repo
  2. [mall]
  3. name=mall
  4. baseurl=ftp://192.168.44.100/mall-repo
  5. gpgcheck=0
  6. enabled=1

(3)编写init.sh文件

  1. vi init.sh
  2. #!/bin/bash
  3. mysql_install_db --user=root
  4. mysqld_safe --user=root & #一定要加--user=root
  5. sleep 8
  6. mysqladmin -u root password 'root'
  7. mysql -uroot -proot -e "grant all privileges on *.* to 'reader'@'%' identified by '123456' ;"
  8. mysql -uroot -proot -e "create database mall;use mall;"
  9. mysql -uroot -proot mall < /root/mall.sql

(4)构建镜像

  1. [root@master mysql]# docker build -t mysql:1 .
  2. ........

2.构建redis镜像

题目要求:
(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)设置服务开机自启。
image.png

(1)编写redis的dockfile

  1. # vi dockerfile
  2. FROM centos:centos7.5.1804
  3. MAINTAINER jing
  4. RUN rm -rf /etc/yum.repos.d/*
  5. COPY local.repo /etc/yum.repos.d/
  6. RUN yum install -y redis
  7. RUN sed -i -e 's/bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis.conf
  8. RUN sed -i -e 's/peotected-mode yes/protected-mode no/g' /etc/redis.conf
  9. RUN sed -i -e 's/daemonize yes/daemonize no/g' /etc/redis.conf
  10. EXPOSE 6379
  11. CMD ["/usr/bin/redis-server", "/etc/redis.conf"]

(2)编写local.repo 文件

local.repo 文件与构建mariadb文件一样这里不在展示

(3)构建redis镜像

  1. [root@master mysql]# docker build -t redis:c1 .
  2. .......

3.构建Nacos-Registry镜像

题目要求:
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)安装jdk工具和nacos-server工具;
(4)开放端口:8848;
(5)设置nacos服务开机自启。
image.png

(1)编写nacos的dockerfile

  1. # vi dockerfile
  2. FROM centos:centos7.5.1804
  3. MAINTAINER jing
  4. RUN rm -rf /etc/yum.repos.d/*
  5. COPY local.repo /etc/yum.repos.d/
  6. ADD nacos-server-1.1.0.tar.gz /usr/local
  7. ADD jdk-8u121-linux-x64.tar.gz /usr/local
  8. ENV JAVA_HOME /usr/local/jdk1.8.0_121
  9. ENV NACOS_HOME /usr/local/nacos
  10. ENV PATH=$PATH:$JAVA_HOME/bin:$NACOS_HOME/bin
  11. EXPOSE 8848
  12. CMD startup.sh -m standalone && tail -f $NACOS_HOME/logs/start.out

(2)编写local.repo 文件

local.repo 文件与构建mariadb文件一样这里不在展示

(3)构建nacos镜像

  1. [root@master mysql]# docker build -t nacos:c1 .
  2. .......

4.构建rabbitmq镜像

题目要求:(这题在原题中没有要求这里为自己写的)
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)安装rabbitmq-server;
(4)开放端口:5672, 15672;
(5)设置rabbitmq_manage开启
image.png

(1)编写rabbitmq的dockerfile

  1. # vi dockerfile
  2. FROM centos:centos7.5.1804
  3. MAINTAINER jing
  4. RUN rm -rf /etc/yum.repos.d/*
  5. COPY local.repo /etc/yum.repos.d/
  6. RUN yum install -y rabbitmq-server
  7. COPY rabbitmq.sh /root/
  8. RUN chmod +x /root/rabbitmq_start.sh
  9. EXPOSE 5672 15672
  10. CMD ["/bin/bash","/root/rabbitmq.sh"]

(2)编写local.repo 文件

local.repo 文件与构建mariadb文件一样这里不在展示

(3)编写rabbitmq_start.sh 文件

  1. vi rabbitmq_start.sh
  2. #!/bin/bash
  3. rabbitmq=/usr/lib/rabbitmq/bin
  4. $rabbitmq/rabbitmq-server start
  5. sleep 8
  6. $rabbitmq/rabbitmqctl add_vhost mall
  7. $rabbitmq/rabbitmqctl add_user mall mall
  8. $rabbitmq/rabbitmqctl add_user_tag mall admin
  9. $rabbitmq/rabbitmqctl set_permissions -p mall mall '.*' '.*' '.*'
  10. $rabbitmq/rabbitmq-plugins enable rabbitmq_management
  11. $rabbitmq/rabbitmq-server restart

(4)构建rabbitmq镜像

  1. [root@master mysql]# docker build -t rabbitmq:c1 .
  2. .......

5.容器化部署前段服务

题目要求:
在master节点上安装node工具,对mall-admin-web项目进行打包,然后编写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服务开机自启。

load镜像

image.png
image.png

(1)生成前端文件:

  1. [root@master mall-swarm]# tar -zxvf mall-admin-web.tar.gz
  2. [root@master mall-swarm]# cd mall-admin-web
  3. [root@master mall-admin-web]# vi config/prod.env.js
  4. 'use strict'
  5. module.exports = {
  6. NODE_ENV: '"production"',
  7. BASE_API: '"http://10.24.2.156:8201/mall-admin"' #修改为本机IP
  8. }

(2)使用命令进行打包,生成dist目录:

  1. [root@node mall-admin-web]# cd ../
  2. [root@node mall-swarm]# tar zxvf node-v6.17.1-linux-x64.tar.gz
  3. [root@node mall-swarm]# mv node-v6.17.1-linux-x64 /usr/local/node
  4. [root@node mall-swarm]# vi /etc/profile
  5. export NODE_HOME=/usr/local/node
  6. export PATH=$NODE_HOME/bin:$PATH
  7. [root@node mall-swarm]# source /etc/profile
  8. [root@node mall-swarm]# node -v
  9. v6.17.1
  10. [root@node mall-swarm]# npm -v
  11. 3.10.10
  12. [root@node mall-swarm]# cd mall-admin-web
  13. [root@master mall-admin-web]# npm run build
  14. ......
  15. [root@master mall-admin-web]# mv dist/ ../
  16. [root@master mall-admin-web]# cd ../

(3)编写nginx的dockerfile文件

  1. # vi dockerfile
  2. FROM centos:centos7.5.1804
  3. MAINTAINER jing
  4. RUN rm -rf /etc/yum.repos.d/*
  5. COPY local.repo /etc/yum.repos.d/
  6. RUN yum install -y nginx
  7. RUN rm -rf /usr/share/nginx/html/*
  8. COPY dist/ /usr/share/nginx/html/
  9. EXPOSE 80
  10. CMD ["nginx","-g","daemon off;"]

(4)编写local.repo 文件

local.repo 文件与构建mariadb文件一样这里不在展示

(5)生成nginx镜像

  1. [root@master mysql]# docker build -t nginx:c1 .
  2. .......

6.编排部署ChinaSkillsMall商城

在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)容器1名称:chinaskillmall-redis;镜像:chinaskillmall-redis:v1.1;端口映射:6379:6379。
完成后编排部署ChinaSkillsMall商城。

编写docker-compose文件

image.png

  1. # vi docker-copose
  2. version: '3'
  3. services:
  4. mysql:
  5. image: mysql:x1
  6. container_name: mysql
  7. restart: always
  8. ports:
  9. - 3306:3306
  10. redis:
  11. image: redis:x1
  12. container_name: redis
  13. ports:
  14. - 6379:6379
  15. nginx:
  16. image: nginx:x1
  17. container_name: nginx
  18. ports:
  19. - 8888:80
  20. rabbitmq:
  21. image: rabbitmq:x1
  22. container_name: rabbitmq
  23. ports:
  24. - 5672:5672
  25. - 15672:15672
  26. nacos-registry:
  27. image: nacos:x1
  28. container_name: nacos-registry
  29. ports:
  30. - 8848:8848
  31. mall-admin:
  32. image: mall/mall-admin:1.0-SNAPSHOT
  33. container_name: mall-admin
  34. ports:
  35. - 8080:8080
  36. links:
  37. - mysql:db
  38. mall-gateway:
  39. image: mall/mall-gateway:1.0-SNAPSHOT
  40. container_name: mall-gateway
  41. ports:
  42. - 8201:8201
  43. links:
  44. - redis:redis
  45. - nacos-registry:nacos-registry
  46. mall-auth:
  47. image: mall/mall-auth:1.0-SNAPSHOT
  48. container_name: mall-auth
  49. ports:
  50. - 8401:8401
  51. links:
  52. - nacos-registry:nacos-registry

来吧展示!!!

  1. [root@master mymall]# docker-compose up

image.png
查看各个镜像运行情况
image.png

在浏览器访问nginx暴露的端口可访问到mall(密码是:macro123)

image.png

也可访问nacos,通过ip+nacos暴露的端口加”/nacos”可访问到(账号密码都是nacos)

image.png
image.png