赞
踩
【题目 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.镜像构建成功得 0.5 分;
2.数据库安装且导入数据成功得 0.5 分。
- vi Dockerfile
-
- ##内容如下
- # 使用 CentOS 7.9.2009 作为基础镜像
-
- FROM centos:7.9.2009
-
- # 安装 MariaDB 服务
-
- RUN yum install -y mariadb-server mariadb
-
- # 配置 MariaDB 服务
-
- RUN sed -i "s/^bind-address.*$/bind-address=0.0.0.0/" /etc/my.cnf
-
- RUN sed -i "s/^\[mariadb\]/[mariadb]\ncharacter-set-server=utf8mb4\ncollation-server=utf8mb4_unicode_ci\n/" /etc/my.cnf
-
- # 声明端口
-
- EXPOSE 3306
-
- # 设置数据库 root 用户的密码
-
- ENV MYSQL_ROOT_PASSWORD=root
-
- # 将数据库文件 hyperf_admin.sql 导入数据库
-
- ADD hyperf_admin.sql /docker-entrypoint-initdb.d/
-
- # 设置服务开机自启
-
- RUN systemctl enable mariadb
-
- # 拷贝启动脚本
-
- COPY entrypoint.sh /usr/local/bin/
-
- RUN chmod +x /usr/local/bin/entrypoint.sh
-
- ENTRYPOINT ["entrypoint.sh"]
-
- # 设置容器启动命令
-
- CMD ["mysqld_safe"]
除了 Dockerfile 文件之外,还需要创建一个名为 entrypoint.sh 的启动脚本文件,内容如下:
- vi entrypoint.sh
- ##内容如下
-
- #!/bin/bash
-
- set -e
-
- # 初始化数据库
-
- if [ ! -d "/var/lib/mysql/mysql" ]; then
-
- mysql_install_db --user=mysql --ldata=/var/lib/mysql
-
- chown -R mysql:mysql /var/lib/mysql
-
- # 启动 mariadb 服务
-
- mysqld_safe --nowatch --user=mysql &
-
- # 等待服务启动
-
- sleep 5
-
- # 设置 root 用户密码
-
- mysql -uroot -e "SET PASSWORD FOR root@localhost=PASSWORD('${MYSQL_ROOT_PASSWORD}');"
-
- # 导入 hyperf_admin.sql 文件
-
- if [ -f "/docker-entrypoint-initdb.d/hyperf_admin.sql" ]; then
-
- mysql -uroot -p${MYSQL_ROOT_PASSWORD} < /docker-entrypoint-initdb.d/hyperf_admin.sql
-
- fi
-
- # 关闭 mariadb 服务
-
- mysqladmin -uroot -p${MYSQL_ROOT_PASSWORD} shutdown
-
- fi
-
- # 启动 mariadb 服务
-
- exec mysqld_safe --user=mysql
请将 entrypoint.sh 文件与 Dockerfile 文件放在同一个目录下,并确保 hyperf_admin.sql 文件也在此目录下。然后在此目录中运行如下命令以构建镜像。
docker build -t hyperf-mariadb:v1.0 .
【题目 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.镜像构建成功的 0.5 分;
2.Redis 服务安装成功且配置正确得 0.5 分。
- vi Dockerfile
-
- # 使用 CentOS 7.9.2009 作为基础镜像
-
- FROM centos:7.9.2009
-
- # 安装 Redis 服务
-
- RUN yum install -y epel-release
-
- RUN yum install -y redis
-
- # 配置 Redis 服务
-
- RUN sed -i 's/^bind .*/bind 0.0.0.0/' /etc/redis.conf
-
- RUN sed -i 's/^protected-mode yes/protected-mode no/' /etc/redis.conf
-
- # 声明端口
-
- EXPOSE 6379
-
- # 设置服务开机自启
-
- RUN systemctl enable redis
-
- # 设置容器启动命令
-
- CMD ["redis-server", "/etc/redis.conf"]
将以上内容保存为 Dockerfile 文件,然后在 Dockerfile 所在目录中运行
docker build -t hyperf-redis:v1.0 .
【题目 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.镜像构建成功得 0.3 分;
2.Nginx 安装成功且配置正确得 0.2 分。
- ##Dockerfile内容如下:
-
- # 使用 CentOS 7.9.2009 作为基础镜像
-
- FROM centos:7.9.2009
-
- # 安装 Nginx 服务
-
- RUN yum install -y epel-release
-
- RUN yum install -y nginx
-
- # 声明端口
-
- EXPOSE 80
-
- # 设置服务开机自启
-
- RUN systemctl enable nginx
-
- # 设置容器启动命令
-
- CMD ["nginx", "-g", "daemon off;"]
将以上内容保存为 Dockerfile 文件,然后在 Dockerfile 所在目录中运行
docker build -t hyperf-nginx:v1.0 .
【题目 4】容器化 Hyperf 服务[1 分]
编写 Dockerfile 文件构建 hyperf-service:v1.0 镜像,具体要求如下: (需要用到的软件包:Hyperf.tar.gz)
(1)基础镜像:centos:7.9.2009;
(2)安装 PHP 及扩展;
(3)使用源码编译安装 Swoole。
完成后构建镜像,并提交 master 节点的用户名、密码和 IP 地址到答题框。
1.镜像构建成功得 0.5 分;
2.PHP 安装成功得 0.2 分;
3.Swoole 安装成功得 0.3 分。
Dockerfile内容如下:
- # 使用 CentOS 7.9.2009 作为基础镜像
-
- FROM centos:7.9.2009
-
- # 安装必要的依赖和 PHP 及扩展
-
- RUN yum install -y epel-release
-
- RUN yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
-
- RUN yum-config-manager --enable remi-php74
-
- RUN yum install -y php php-cli php-devel php-openssl php-pdo php-mbstring php-xml php-bcmath php-json php-gd php-curl gcc-c++ make autoconf unzip
-
- # 添加 Swoole 源码
-
- ADD https://github.com/swoole/swoole-src/archive/v4.7.1.tar.gz /tmp/swoole-src.tar.gz
-
- # 使用源码编译安装 Swoole
-
- RUN tar -zxvf /tmp/swoole-src.tar.gz -C /tmp/ \
-
- && cd /tmp/swoole-src-* \
-
- && phpize \
-
- && ./configure \
-
- && make \
-
- && make install
-
- # 添加 Swoole 扩展到 PHP 配置文件
-
- RUN echo "extension=swoole.so" > /etc/php.d/swoole.ini
-
- # 添加 Hyperf 代码
-
- COPY Hyperf.tar.gz /var/www/
-
- RUN cd /var/www/ && \
-
- tar -zxvf Hyperf.tar.gz && \
-
- rm Hyperf.tar.gz
-
- # 设置工作目录
-
- WORKDIR /var/www/hyperf-master
-
- # 设置容器启动命令
-
- CMD ["php", "bin/hyperf.php", "start"]
构建镜像:
docker build -t hyperf-service:v1.0 .
【题目 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.docker-compose.yaml 文件编排成功得 1.5 分;
2.8081 端口访问服务成功得 1 分;
3.Hyperf-service 连接数据库和 Redis 成功得 1 分。
docker-compose.yaml内容如下:
- version: '3'
-
- services:
-
- hyperf-mysql:
-
- image: hyperf-mariadb:v1.0
-
- container_name: hyperf-mysql
-
- ports:
-
- - "3306:3306"
-
- hyperf-redis:
-
- image: hyperf-redis:v1.0
-
- container_name: hyperf-redis
-
- hyperf-ui:
-
- image: hyperf-nginx:v1.0
-
- container_name: hyperf-ui
-
- ports:
-
- - "80:8081"
-
- hyperf-service:
-
- image: hyperf-service:v1.0
-
- container_name: hyperf-service
将此内容保存到 /root/hyperf/project/docker-compose.yaml 文件中。在保存文件后,您可以使用 docker-compose 工具部署这些服务。
安装docker-compose:
- curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
- chmod +x /usr/local/bin/docker-compose
-
-
- ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
在包含 docker-compose.yaml 文件的目录中运行以下命令:
docker-compose up -d
通过执行上述 docker-compose up -d
命令,您已完成 Hyperf 框架的部署。现在,所有服务应该正在运行,你可以通过访问 http://localhost
来查看 hyperf-ui 容器所提供的界面。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。