当前位置:   article > 正文

2022 年全国职业院校技能大赛高职组云计算赛项试卷-容器云-2_【题目 1】容器化 mariadb 服务[1 分] 编写dockerfile文件构建hyperf-m

【题目 1】容器化 mariadb 服务[1 分] 编写dockerfile文件构建hyperf-mariadb:v1.

【题目 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 分。

  1. vi Dockerfile
  2. ##内容如下
  3. # 使用 CentOS 7.9.2009 作为基础镜像
  4. FROM centos:7.9.2009
  5. # 安装 MariaDB 服务
  6. RUN yum install -y mariadb-server mariadb
  7. # 配置 MariaDB 服务
  8. RUN sed -i "s/^bind-address.*$/bind-address=0.0.0.0/" /etc/my.cnf
  9. RUN sed -i "s/^\[mariadb\]/[mariadb]\ncharacter-set-server=utf8mb4\ncollation-server=utf8mb4_unicode_ci\n/" /etc/my.cnf
  10. # 声明端口
  11. EXPOSE 3306
  12. # 设置数据库 root 用户的密码
  13. ENV MYSQL_ROOT_PASSWORD=root
  14. # 将数据库文件 hyperf_admin.sql 导入数据库
  15. ADD hyperf_admin.sql /docker-entrypoint-initdb.d/
  16. # 设置服务开机自启
  17. RUN systemctl enable mariadb
  18. # 拷贝启动脚本
  19. COPY entrypoint.sh /usr/local/bin/
  20. RUN chmod +x /usr/local/bin/entrypoint.sh
  21. ENTRYPOINT ["entrypoint.sh"]
  22. # 设置容器启动命令
  23. CMD ["mysqld_safe"]

除了 Dockerfile 文件之外,还需要创建一个名为 entrypoint.sh 的启动脚本文件,内容如下:

  1. vi entrypoint.sh
  2. ##内容如下
  3. #!/bin/bash
  4. set -e
  5. # 初始化数据库
  6. if [ ! -d "/var/lib/mysql/mysql" ]; then
  7.     mysql_install_db --user=mysql --ldata=/var/lib/mysql
  8.     chown -R mysql:mysql /var/lib/mysql
  9.     # 启动 mariadb 服务
  10.     mysqld_safe --nowatch --user=mysql &
  11.     # 等待服务启动
  12.     sleep 5
  13.     # 设置 root 用户密码
  14.     mysql -uroot -e "SET PASSWORD FOR root@localhost=PASSWORD('${MYSQL_ROOT_PASSWORD}');"
  15.     # 导入 hyperf_admin.sql 文件
  16.     if [ -f "/docker-entrypoint-initdb.d/hyperf_admin.sql" ]; then
  17.         mysql -uroot -p${MYSQL_ROOT_PASSWORD} < /docker-entrypoint-initdb.d/hyperf_admin.sql
  18.     fi
  19.     # 关闭 mariadb 服务
  20.     mysqladmin -uroot -p${MYSQL_ROOT_PASSWORD} shutdown
  21. fi
  22. # 启动 mariadb 服务
  23. 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 分。

  1. vi Dockerfile
  2. # 使用 CentOS 7.9.2009 作为基础镜像
  3. FROM centos:7.9.2009
  4. # 安装 Redis 服务
  5. RUN yum install -y epel-release
  6. RUN yum install -y redis
  7. # 配置 Redis 服务
  8. RUN sed -i 's/^bind .*/bind 0.0.0.0/' /etc/redis.conf
  9. RUN sed -i 's/^protected-mode yes/protected-mode no/' /etc/redis.conf
  10. # 声明端口
  11. EXPOSE 6379
  12. # 设置服务开机自启
  13. RUN systemctl enable redis
  14. # 设置容器启动命令
  15. 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 分。

  1. ##Dockerfile内容如下:
  2. # 使用 CentOS 7.9.2009 作为基础镜像
  3. FROM centos:7.9.2009
  4. # 安装 Nginx 服务
  5. RUN yum install -y epel-release
  6. RUN yum install -y nginx
  7. # 声明端口
  8. EXPOSE 80
  9. # 设置服务开机自启
  10. RUN systemctl enable nginx
  11. # 设置容器启动命令
  12. 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内容如下:

  1. # 使用 CentOS 7.9.2009 作为基础镜像
  2. FROM centos:7.9.2009
  3. # 安装必要的依赖和 PHP 及扩展
  4. RUN yum install -y epel-release
  5. RUN yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
  6. RUN yum-config-manager --enable remi-php74
  7. 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
  8. # 添加 Swoole 源码
  9. ADD https://github.com/swoole/swoole-src/archive/v4.7.1.tar.gz /tmp/swoole-src.tar.gz
  10. # 使用源码编译安装 Swoole
  11. RUN tar -zxvf /tmp/swoole-src.tar.gz -C /tmp/ \
  12.     && cd /tmp/swoole-src-* \
  13.     && phpize \
  14.     && ./configure \
  15.     && make \
  16.     && make install
  17. # 添加 Swoole 扩展到 PHP 配置文件
  18. RUN echo "extension=swoole.so" > /etc/php.d/swoole.ini
  19. # 添加 Hyperf 代码
  20. COPY Hyperf.tar.gz /var/www/
  21. RUN cd /var/www/ && \
  22.     tar -zxvf Hyperf.tar.gz && \
  23.     rm Hyperf.tar.gz
  24. # 设置工作目录
  25. WORKDIR /var/www/hyperf-master
  26. # 设置容器启动命令
  27. 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内容如下:

  1. version: '3'
  2. services:
  3.   hyperf-mysql:
  4.     image: hyperf-mariadb:v1.0
  5.     container_name: hyperf-mysql
  6.     ports:
  7.       - "3306:3306"
  8.   hyperf-redis:
  9.     image: hyperf-redis:v1.0
  10.     container_name: hyperf-redis
  11.   hyperf-ui:
  12.     image: hyperf-nginx:v1.0
  13.     container_name: hyperf-ui
  14.     ports:
  15.       - "80:8081"
  16.   hyperf-service:
  17.     image: hyperf-service:v1.0
  18.     container_name: hyperf-service

将此内容保存到 /root/hyperf/project/docker-compose.yaml 文件中。在保存文件后,您可以使用 docker-compose 工具部署这些服务。

安装docker-compose:

  1. curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 
  2. chmod +x /usr/local/bin/docker-compose
  3. 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 容器所提供的界面。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/数据挖掘灵魂/article/detail/60108
推荐阅读
相关标签
  

闽ICP备14008679号