0%

“云计算-容器云-任务2”

云计算赛项第二场-容器云-江苏卷-任务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