前言:前三题都是常见的容器构建,而第四题的构建是自己推测的,存在一点问题,仅供学习参考,还未解决,最后的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 地址到答题框。文章来源:https://www.toymoban.com/news/detail-413891.html
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 分。文章来源地址https://www.toymoban.com/news/detail-413891.html
到了这里,关于2022云计算国赛-容器云应用部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!