2022云计算国赛-容器云应用部署

前言:前三题都是常见的容器构建,而第四题的构建是自己推测的,存在一点问题,仅供学习参考,还未解决,最后的docker-compose则是借鉴的,是没啥问题的。

有需要可以加群q726922223大家相互交流一下解题思路。

【任务 2】容器云应用部署:Docker Compose 编排部署[7.0 分]

Hyperf 是一个高性能、高灵活性的渐进式 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-FPM 的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性。请根据要求完成数据库服务 MariaDB、缓存服务 Redis、微服务 Hyperf 及前端服务Nginx 按照要求进行容器化。

【题目 1】容器化 MariaDB 服务[1 分]

编写Dockerfile 文件构建hyperf-mariadb:v1.0 镜像,具体要求如下:(需要用到的软件包:
Hyperf.tar.gz)

(1)基础镜像:centos:7.9.2009;
(2)完成 MariaDB 服务的安装;
(3)声明端口:3306;
(4)设置数据库 root 用户的密码为root;
(5)将提供的数据库文件 hyperf_admin.sql 导入数据库;
(6)设置服务开机自启。
完成后构建镜像,并提交master 节点的用户名、密码和 IP 地址到答题框。

1,上传centos镜像

[root@k8s-master-node1 images]# docker load -i centos_7.9.2009.tar

2,构建初始化脚本

#mysql初始化自启动脚本

[root@k8s-master-node1 Hyperf]# cat mysql_init.sh
#!/bin/bash
mysql_install_db --user=root
mysqld_safe --user=root &
sleep 8
mysqladmin -u root password 'root'
mysql -uroot -proot -e "grant all on *.* to 'root'@'%' identified by 'root'; flush privileges;"
mysql -uroot -proot -e " source /opt/hyperf_admin.sql;"

3,配置yum源

#镜像本地yum源
[root@k8s-master-node1 Hyperf]# cat local.repo
[hypref]
name=hypref
baseurl=file:///root/yum
gpgcheck=0
enabled=1

4,开始构建

[root@k8s-master-node1 Hyperf]# cat Dockerfile-mariadb
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
ENV LC_ALL en_US.UTF-8
RUN yum -y install mariadb-server
COPY sql /opt/
COPY mysql_init.sh /opt/
RUN bash /opt/mysql_init.sh
EXPOSE 3306
CMD ["mysqld_safe","--user=root"]

[root@k8s-master-node1 Hyperf]# docker build -t hyperf-mariadb:v1.0 -f Dockerfile-mariadb .

1.镜像构建成功得 0.5 分;
2.数据库安装且导入数据成功得 0.5 分。

【题目 2】容器化Redis 服务[1 分]

编写 Dockerfile 文件构建 hyperf-redis:v1.0 镜像,具体要求如下:(需要用到的软件包:
Hyperf.tar.gz)
(1)基础镜像:centos:7.9.2009;
(2)安装Redis 服务;
(3)关闭保护模式;
(4)声明端口:6379;
(5)设置服务开机自启。
完成后构建镜像,并提交master 节点的用户名、密码和 IP 地址到答题框。

[root@k8s-master-node1 Hyperf]# cat Dockerfile-redis
FROM centos:centos7.9.2009
MAINTAINER huhy
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum -y install redis
RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf && 
   sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
EXPOSE 6379
CMD ["/usr/bin/redis-server","/etc/redis.conf"]

[root@k8s-master-node1 Hyperf]# docker build -t hyperf-redis:v1.0 -f Dockerfile-redis .

1.镜像构建成功的 0.5 分;
2.Redis 服务安装成功且配置正确得 0.5 分。

【题目 3】容器化Nginx 服务[0.5 分]

编写 Dockerfile 文件构建hyperf-nginx:v1.0 镜像,具体要求如下:(需要用到的软件包:
Hyperf.tar.gz)
(1)基础镜像:centos:7.9.2009;
(2)安装nginx 服务;
(3)声明端口:80;
(4)设置服务开机自启。
完成后构建镜像,并提交master 节点的用户名、密码和 IP 地址到答题框。

[root@k8s-master-node1 Hyperf]# cat Dockerfile-nginx
FROM centos:centos7.9.2009
MAINTAINER huhy
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum -y install nginx
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

[root@k8s-master-node1 Hyperf]# docker build -t hyperf-nginx:v1.0 -f Dockerfile-nginx .

1.镜像构建成功得 0.3 分;
2.Nginx 安装成功且配置正确得 0.2 分。

【题目 4】容器化Hyperf 服务[1 分]

编写Dockerfile 文件构建hyperf-service:v1.0 镜像,具体要求如下:(需要用到的软件包:
Hyperf.tar.gz)
(1)基础镜像:centos:7.9.2009;
(2)安装 PHP 及扩展;
(3)使用源码编译安装Swoole。
完成后构建镜像,并提交master 节点的用户名、密码和 IP 地址到答题框。

FROM centos:centos7.9.2009
MAINTAINER huhy
RUN rm -rf /etc/yum.repos.d/*
# 上传repo文件
COPY local.repo /etc/yum.repos.d/
# 上传yum源
COPY yum /root/yum
# 上传swoole
COPY swoole-v4.8.3.zip /root/
# 安装php及相关扩展
RUN yum -y install php php-cli php-fpm php-mbstring php-pdo php-mysqlnd php-redis php-zip php-gd php-xml php-pear php-devel
# 安装编译所需的工具
RUN yum -y install gcc make autoconf libc-dev pkg-config
# 复制Swoole源码到容器中
COPY swoole-v4.8.3.zip /usr/local/src/swoole-v4.8.3.zip
# 解压Swoole源码
RUN yum install -y unzip
RUN cd /root/ && unzip swoole-v4.8.3.zip -d /usr/local/src/
# 编译Swoole并安装
RUN cd /usr/local/src/swoole-v4.8.3/ && phpize && ./configure --enable-openssl --enable-http2 --enable-sockets && make && make install
# 设置工作目录
WORKDIR /var/www
# 将PHP配置文件复制到容器中
COPY project /var/www/
# 暴露端口
EXPOSE 9501
# 设置开机启动
CMD ["php", "/var/www/backend/bin/hyperf.php", "start"]
[root@k8s-master-node1 Hyperf]# docker build -t hyperf-service:v1.0 -f Dockerfile-php .

1.镜像构建成功得 0.5 分;
2.PHP 安装成功得 0.2 分;
3.Swoole 安装成功得 0.3 分。

【题目 5】编排部署Hyperf 框架[3.5 分]

编写/root/hyperf/project/docker-compose.yaml 文件,具体要求如下:
(1)容器 1 名称:hyperf-mysql;镜像:hyperf-mariadb:v1.0;端口映射:3306:3306;
(2)容器 2 名称:hyperf-redis;镜像:hyperf-redis:v1.0;
(3)容器 3 名称:hyperf-ui;镜像:hyperf-nginx:v1.0;端口映射:80:8081;
(4)容器 4 名称:hyperf-service;镜像:hyperf-service:v1.0。
完成后编排部署Hyperf 框架,并提交master 节点的用户名、密码和 IP 地址到答题框。

version: '3.1'
services:
  app:
    container_name: hyperf-service
    image:  hyperf-service:v1.0
    command:
      - /bin/sh
      - -c
      - |    #下面都是启动容器后服务会执行的命名
        cd /data
        cp .env.dev.docker .env
        php -d memory_limit=-1 `which composer` i --no-dev
        rm -rf runtime/*
        php bin/hyperf.php start
    volumes:
      - ./backend:/data
    tty: true
    links:
      - mysql
      - redis
    environment:
      HOST_IP: 127.0.0.1
      HOST_PORT: 9511
  mysql:
    container_name: hyperf-mysql
    image: hyperf-mariadb:v1.0
    ports:
      - 3306:3306
    restart: always
  redis:
    image: hyperf-redis:v1.0
    container_name: hyperf-redis
    restart: always
  nginx:
    image: hyperf-nginx:v1.0
    container_name: hyperf-nginx
    ports:
      - 8081:80
    links:
      - app
    volumes:
      - ./conf.d/:/etc/nginx/conf.d
      - ./docker/log:/var/log/nginx
      - ./frontend:/var/www/frontend

.docker-compose.yaml 文件编排成功得 1.5 分;
2.8081 端口访问服务成功得 1 分;
3.Hyperf-service 连接数据库和Redis 成功得 1 分。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>