前言:前三题都是常见的容器构建,而第四题的构建是本身推测的,存在一点问题,仅供学习参考,还未解决,最后的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 分。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |