云计算赛项第二场-容器云-江苏卷-任务2
【任务2】基于Docker 容器的web 应用系统部署[10 分]
将MariaDB 数据库组件、Redis 消息组件、RabbitMQ 消息组件、Nacos-Registry 注册中心服务组件和前端Nginx 组件按照要求进行容器化。(所需要的软件包mall-swarm.tar.gz在http 服务中)。
【适用平台】私有云
【题目1】容器化部署Redis
在 master 节 点 上 编 写 /root/redis/Dockerfile文 件 构 建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)设置服务开机自启。
完成后构建镜像,并提交master 节点的用户名、密码和IP 到答题框。
cd /root
mkdir redis
cd redis
vi Dockerfile
1 2 3 4 5 6 7 8
| FROM centos:centos7.5.1804 MAINTAINER Chinaskill RUN rm -rf /etc/yum.repos.d/* ADD local.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"]
|
vi local.repo
1 2 3 4 5 6 7 8 9
| [docker] baseurl=http://172.19.25.11/paas/kubernetes-repo/ gpgcheck=0 enabled=1
[centos] baseurl=ftp://192.168.20.132/centos gpgcheck=0 enabled=1
|
docker build -t chinaskill-redis:v1.1 .
【题目2】容器化部署MariaDB
在 master 节 点 上 编 写 /root/mariadb/Dockerfile 文 件 构 建chinaskill-mariadb:v1.1 镜像,具体要求如下:
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)安装并初始化mariadb,密码:root;
(4)设置数据库编码为UTF-8;
(5)开放端口:3306
(6)设置mariadb 开机自启。
完成后构建镜像,并提交master 节点的用户名、密码和IP 到答题框。
cd /root
mkdir mariadb
cd mariadb
vi Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12
| FROM centos:centos7.5.1804 MAINTAINER chinaskill RUN rm -rf /etc/yum.repos.d/* ADD local.repo /etc/yum.repos.d/ ADD gpmall.sql /opt/ ADD start.sh /opt/ RUN yum -y install mariadb-server \ && chmod +x /opt/start.sh \ && /opt/start.sh EXPOSE 3306 ENV LC_ALL en_US.UTF-8 CMD mysqld_safe
|
cp /root/redis/local.repo /root/mariadb/
cp /opt/ChinaskillMall/gpmall.sql /root/mariadb/
vi start.sh
1 2 3 4 5 6 7
| #!/bin/bash mysql_install_db --user=mysql mysqld_safe & sleep 3 mysqladmin -u root password '123456' mysql -uroot -p123456 -e "grant all privileges on *.* to 'root'@'%' identified by '123456';" mysql -uroot -p123456 -e "create database gpmall;use gpmall;source /opt/gpmall.sql;"
|
docker build -t chinaskill-mariadb:v1.1 .
【题目3】容器化部署zookeeper
在 master 节 点 上 编 写 /root/zookeeper/Dockerfile 文 件 构 建chinaskill-zookeeper:v1.1 镜像,具体要求如下:
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)开放端口:2181;
(4)设置 服务开机自启。
完成后构建镜像,并提交master 节点的用户名、密码和IP 到答题框。
cd /root
mkdir zookeeper
cd zookeeper
vi Dockerfile
1 2 3 4 5 6 7 8 9
| FROM centos:centos7.5.1804 MAINTAINER Chinaskill EXPOSE 2181 RUN rm -rf /etc/yum.repos.d/* COPY ftp.repo /etc/yum.repos.d/ftp.repo 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"]
|
vi ftp.repo
1 2 3 4 5 6 7 8 9
| [docker] baseurl=http://172.19.25.11/paas/kubernetes-repo/ gpgcheck=0 enabled=1
[centos] baseurl=ftp://192.168.20.132/centos gpgcheck=0 enabled=1
|
cp /opt/ChinaskillMall/zookeeper-3.4.14.tar.gz /root/zookeeper/
docker build -t chinaskill-zookeeper:v1.1 .
【题目4】容器化部署kafka
在 master 节 点 上 编 写 /root/kafka/Dockerfile 文 件 构 建chinaskill-kafka:v1.1 镜像,具体要求如下:
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)开放端口:9092;
(4)设置 服务开机自启。
完成后构建镜像,并提交master 节点的用户名、密码和IP 到答题框。
cd /root
mkdir kafka
cd kafka
vi Dockerfile
1 2 3 4 5 6 7 8 9 10
| FROM centos:centos7.5.1804 MAINTAINER Chinaskill RUN rm -rf /etc/yum.repos.d/* ADD local.repo /etc/yum.repos.d/ ADD zookeeper-3.4.14.tar.gz /opt ADD kafka_2.11-1.1.1.tgz /opt RUN yum install -y 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 EXPOSE 9092 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"]
|
cp /opt/ChinaskillMall/kafka_2.11-1.1.1.tgz /root/kafka/
cp /opt/ChinaskillMall/zookeeper-3.4.14.tar.gz /root/kafka/
cp /root/redis/local.repo /root/kafka
docker build -t chinaskill-kafka:v1.1 .
【题目5】容器化部署nginx
在 master 节 点 上 编 写 /root/nginx/Dockerfile 文 件 构 建chinaskill-nginx:v1.1 镜像,具体要求如下:
(1)基础镜像:centos:centos7.5.1804;
(2)作者:Chinaskill;
(3)开放端口 80 8081 8082 8083;
(4)设置 服务开机自启。
完成后构建镜像,并提交master 节点的用户名、密码和IP 到答题框。
cd /root
mkdir nginx
cd nginx
vi Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| FROM centos:centos7.5.1804 MAINTAINER Chinaskill RUN rm -rf /etc/yum.repos.d/* ADD local.repo /etc/yum.repos.d/ ADD *.jar /root/ ADD setup.sh /root/ RUN yum install -y nginx java-1.8.0-openjdk java-1.8.0-openjdk-devel RUN sed -i '1a location /shopping { proxy_pass http://127.0.0.1:8081; }' /etc/nginx/conf.d/default.conf RUN sed -i '2a location /user { proxy_pass http://127.0.0.1:8082; }' /etc/nginx/conf.d/default.conf RUN sed -i '3a location /casher { proxy_pass http://127.0.0.1:8083; }' /etc/nginx/conf.d/default.conf RUN chmod +x /root/setup.sh RUN rm -rf /usr/share/nginx/html/ EXPOSE 80 8081 8082 8083 ADD dist/ /usr/share/nginx/html/ CMD ["nginx","-g","daemon off;"]
|
vi local.repo
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| [centos] baseurl=ftp://192.168.20.132/centos gpgcheck=0 enabled=1
[docker] baseurl=ftp://192.168.20.132/kubernetes-repo gpgcheck=0 enabled=1
[gpmal] baseurl=http://172.19.25.11/paas/ChinaskillMall/gpmall-repo gpgcheck=0 enabled=1
|
cp /opt/ChinaskillMall/*.jar /root/nginx/
cp /opt/ChinaskillMall/dist/ /root/nginx/
vi setup.sh
1 2 3 4 5 6 7 8 9
| #!/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
|
docker build -t chinaskill-nginx:v1.1 .
【题目6】容器编排
在master 节点上编写/root/chinaskill/docker-compose.yaml 文件,具体要求如下:
(1)容器1 名称:mall-mysql;镜像:chinaskill-mariadb:v1.1;端口映射:13306:3306;
(2)容器 2 名称:mall-redis;镜像:chinaskill-redis:v1.1;端口映射:16379:6379;
(3)容器3名称:mall-kafka; 镜像:chinaskill-kafka:v1.1;端口映射:19092:9092;
(4)容器4名称:mall-zookeeper;镜像:chinaskill-zookeeper:v1.1;端口映射:12181:2181;
(5)容器5名称:mall-nginx;镜像:chinaskill-nginx:v1.1;端口映射:83:80;1443:443;
cd /root
mkdir chinaskil
cd chinaskill
vi docker-compose.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| version: '3.3' services: mall-mysql: image: chinaskill-mariadb:v1.1 ports: - 13306:3306
mall-redis: image: chinaskill-redis:v1.1 ports: - 16379:6379
mall-kafka: image: chinaskill-kafka:v1.1 ports: - 19092:9092
mall-zookeeper: image: chinaskill-zookeeper:v1.1 ports: - 12181:2181
mall-nginx: image: chinaskill-nginx:v1.1 depends_on: - mall-mysql - mall-redis - mall-zookeeper - mall-kafka links: - mall-mysql:mysql.mall - mall-redis:redis.mall - mall-zookeeper:zookeeper.mall - mall-kafka:kafka.mall ports: - 83:80 - 1443:443 command: ["sh","-c","/root/setup.sh && nginx && tail -f /etc/shadow"]
|
docker-compose up -d
查看是否开启成功
docker ps