2022云计算国赛-容器云应用摆设

王柳  金牌会员 | 2024-12-27 22:30:50 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 821|帖子 821|积分 2463

前言:前三题都是常见的容器构建,而第四题的构建是本身推测的,存在一点问题,仅供学习参考,还未解决,最后的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镜像
  1. [root@k8s-master-node1 images]# docker load -i centos_7.9.2009.tar
复制代码
2,构建初始化脚本
  1. #mysql初始化自启动脚本
  2. [root@k8s-master-node1 Hyperf]# cat mysql_init.sh
  3. #!/bin/bash
  4. mysql_install_db --user=root
  5. mysqld_safe --user=root &
  6. sleep 8
  7. mysqladmin -u root password 'root'
  8. mysql -uroot -proot -e "grant all on *.* to 'root'@'%' identified by 'root'; flush privileges;"
  9. mysql -uroot -proot -e " source /opt/hyperf_admin.sql;"
复制代码
3,配置yum源
  1. #镜像本地yum源
  2. [root@k8s-master-node1 Hyperf]# cat local.repo
  3. [hypref]
  4. name=hypref
  5. baseurl=file:///root/yum
  6. gpgcheck=0
  7. enabled=1
复制代码
4,开始构建
  1. [root@k8s-master-node1 Hyperf]# cat Dockerfile-mariadb
  2. FROM centos:centos7.9.2009
  3. MAINTAINER Chinaskills
  4. RUN rm -rf /etc/yum.repos.d/*
  5. COPY local.repo /etc/yum.repos.d/
  6. COPY yum /root/yum
  7. ENV LC_ALL en_US.UTF-8
  8. RUN yum -y install mariadb-server
  9. COPY sql /opt/
  10. COPY mysql_init.sh /opt/
  11. RUN bash /opt/mysql_init.sh
  12. EXPOSE 3306
  13. CMD ["mysqld_safe","--user=root"]
  14. [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 地址到答题框。
  1. [root@k8s-master-node1 Hyperf]# cat Dockerfile-redis
  2. FROM centos:centos7.9.2009
  3. MAINTAINER huhy
  4. RUN rm -rf /etc/yum.repos.d/*
  5. COPY local.repo /etc/yum.repos.d/
  6. COPY yum /root/yum
  7. RUN yum -y install redis
  8. RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf && \
  9.    sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
  10. EXPOSE 6379
  11. CMD ["/usr/bin/redis-server","/etc/redis.conf"]
  12. [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 地址到答题框。
  1. [root@k8s-master-node1 Hyperf]# cat Dockerfile-nginx
  2. FROM centos:centos7.9.2009
  3. MAINTAINER huhy
  4. RUN rm -rf /etc/yum.repos.d/*
  5. COPY local.repo /etc/yum.repos.d/
  6. COPY yum /root/yum
  7. RUN yum -y install nginx
  8. EXPOSE 80
  9. CMD ["nginx","-g","daemon off;"]
  10. [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 地址到答题框。
  1. FROM centos:centos7.9.2009
  2. MAINTAINER huhy
  3. RUN rm -rf /etc/yum.repos.d/*
  4. # 上传repo文件
  5. COPY local.repo /etc/yum.repos.d/
  6. # 上传yum源
  7. COPY yum /root/yum
  8. # 上传swoole
  9. COPY swoole-v4.8.3.zip /root/
  10. # 安装php及相关扩展
  11. 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
  12. # 安装编译所需的工具
  13. RUN yum -y install gcc make autoconf libc-dev pkg-config
  14. # 复制Swoole源码到容器中
  15. COPY swoole-v4.8.3.zip /usr/local/src/swoole-v4.8.3.zip
  16. # 解压Swoole源码
  17. RUN yum install -y unzip
  18. RUN cd /root/ && unzip swoole-v4.8.3.zip -d /usr/local/src/
  19. # 编译Swoole并安装
  20. RUN cd /usr/local/src/swoole-v4.8.3/ && phpize && ./configure --enable-openssl --enable-http2 --enable-sockets && make && make install
  21. # 设置工作目录
  22. WORKDIR /var/www
  23. # 将PHP配置文件复制到容器中
  24. COPY project /var/www/
  25. # 暴露端口
  26. EXPOSE 9501
  27. # 设置开机启动
  28. CMD ["php", "/var/www/backend/bin/hyperf.php", "start"]
复制代码
  1. [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 地址到答题框。
  1. version: '3.1'
  2. services:
  3.   app:
  4.     container_name: hyperf-service
  5.     image:  hyperf-service:v1.0
  6.     command:
  7.       - /bin/sh
  8.       - -c
  9.       - |    #下面都是启动容器后服务会执行的命名
  10.         cd /data
  11.         cp .env.dev.docker .env
  12.         php -d memory_limit=-1 `which composer` i --no-dev
  13.         rm -rf runtime/*
  14.         php bin/hyperf.php start
  15.     volumes:
  16.       - ./backend:/data
  17.     tty: true
  18.     links:
  19.       - mysql
  20.       - redis
  21.     environment:
  22.       HOST_IP: 127.0.0.1
  23.       HOST_PORT: 9511
  24.   mysql:
  25.     container_name: hyperf-mysql
  26.     image: hyperf-mariadb:v1.0
  27.     ports:
  28.       - 3306:3306
  29.     restart: always
  30.   redis:
  31.     image: hyperf-redis:v1.0
  32.     container_name: hyperf-redis
  33.     restart: always
  34.   nginx:
  35.     image: hyperf-nginx:v1.0
  36.     container_name: hyperf-nginx
  37.     ports:
  38.       - 8081:80
  39.     links:
  40.       - app
  41.     volumes:
  42.       - ./conf.d/:/etc/nginx/conf.d
  43.       - ./docker/log:/var/log/nginx
  44.       - ./frontend:/var/www/frontend
复制代码
.docker-compose.yaml 文件编排成功得 1.5 分;
2.8081 端口访问服务成功得 1 分;
3.Hyperf-service 连接数据库和Redis 成功得 1 分。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表