• 2020系统综合实践 第3次实践作业



    一个最终的应用通常需要组装多个容器提供的多个服务。以web服务为例,需要完成web服务器、数据库、开发程序等服务的组装,典型的如LAMP(Linux+Apache+Mysql+PHP)或LNMP(Linux+Nginx+Mysql+PHP)。Docker compose是作为定义和运行多容器的工具,用户可以使用 YML 文件来配置应用程序需要的所有服务。

    1.完成Docker-compose的安装

    参考资料:Install Docker Compose

    • 下载Docker Compose的当前稳定版本
    sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    • 将可执行权限应用于二进制文件
    sudo chmod +x /usr/local/bin/docker-compose
    
    • 测试安装
    docker-compose --version
    

    2.Dockerfile编写(包括选作部份)

    要求:LNMP/LAMP选择一种;
    分别构建web、php应用、数据库等镜像服务,php镜像亦有提供php:-apache的变体;
    提示:php连接数据库需要安装必要的核心扩展部件(PHP Core Extensions)安装方法可参考官方镜像介绍。

    2.1 构建目录

    • 按以下结构构件docker_compose文件夹


    • *tree的安装

    2.2 文件编写

    • nginx
    • mysql
    • php
    • phpmyadmin
    • web
      (html与上次实验相同放上次的图)

    3.使用Compose实现多容器运行机制

    编写compose文件,完成上述LNMP/LAMP的微服务组合部署。
    参考资料:Get started with Docker Compose

    3.1 文件编写

    • docker-compose.yml

    3.2 运行及检验

    • 拉取php
    docker pull php
    
    • 开始构建
    sudo docker-compose up -d --build
    
    • 检验镜像和容器的构建情况
    • 访问index.html和index.php

    4.服务测试

    要求和提示:包括但不限于测试数据库连接、数据库新建、表新建、表记录的插入修改和删除是否成功(pdo或 mysqli均可)

    4.1 测试数据库连接

    • 修改index.php使其可以反馈连接情况
    • web查看是否连接成功

    4.2 数据库新建

    • 修改index.php:新建DBtest并反馈
    • web查看是否新建成功
    • 终端中进入容器查看数据库
    sudo docker exec -it ID /bin/bash
    mysql -u root -p
    show databases;
    

    4.3 表操作

    • 修改index.php:新建表Booklist并反馈
    • web查看是否新建成功
    • 终端中查看表
    show tables;
    
    • 修改index.php:在表Booklist中插入数据并反馈
    • web查看是否插入成功
    • 终端中查询
    select * from Booklist;
    
    • 修改index.php:在表Booklist中修改/删除数据并反馈
    • web查看是否修改/删除成功
    • 终端中查询是否已更改
    select * from Booklist;
    

    5.选做

    增加一个phpmyadmin容器,实现web端的数据库管理。

    5.1 文件编写

    • 已在2.2中给出

    5.2 登录及操作

    • 浏览器中访问localhost:8080
    • 查看数据库
    • 查看表Booklist
    • 进行插入等操作
    • 网页上操作方式都很便捷,不再一一截图

    6.总结

    提交可以运行的yml文件和相关的Dockerfile文件、配置文件;
    记录实验过程的主要问题和解决方法,分享经验和感想;
    记录完成作业所花的时间。

    • 相关文件
      见上方截图

    • 问题解决
      这次问题主要也是在前期原理的学习上,操作上比较顺利,只有在写yml文件时遇到格式的报错:

      注意yml文件中不要使用tab,都改为空格就可以了

    • 时间记录
      总耗时大约9小时,大部分时间花在查资料和写文件上,写博客贴图也比较耗时,希望博客园可以早点支持多图上传

  • 相关阅读:
    关于Maven项目build时出现No compiler is provided in this environment的处理
    freemaker的函数使用
    FTP在docker容器中上传失败解决,改为被动模式
    linux重定向及nohup不输出的方法
    手动抠下的wordpress登录页面样式
    使用后端生成图片验证码流文件(不推荐)
    部署到docker容器后图片验证码显示不出来
    Linux修改profile文件改错了,恢复的方法
    DotNETCore 学习笔记 异常处理
    DotNETCore 学习笔记 路由
  • 原文地址:https://www.cnblogs.com/xbrucken/p/12771615.html
Copyright © 2020-2023  润新知