zoukankan      html  css  js  c++  java
  • 2020年系统综合实践 第三次作业

    一、完成Docker-compose的安装

    • 用官方的方法会比较慢,因此选用daocloud安装会快很多。
      sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
      代码中间的1.25.5代表的是版本号,可以选择你想要的对应版本号。
    • 添加可执行权限
      sudo chmod +x /usr/local/bin/docker-compose
    • 测试是否安装成功
      docker-compose --version

    二、Dockerfile编写-LNMP

    • 文件目录组织

    • MQL-Dockerfile
    
    FROM mysql:latest
    
    #作者信息
    
    MAINTAINER ISLAND
    
    #环境变量配置
    
    ENV MYSQL_ALLOW_EMPTY_PASSWORD no
    
    ENV MYSQL_ROOT_PASSWORD 123456
    
    • Nginx-Dockerfile
    #基础镜像
    FROM nginx:latest
    #作者信息
    MAINTAINER ISLAND
    
    • Nginx-Default.conf
    server {
            listen       80;
            server_name  localhost;
        
            location / {
                root   /var/www/html;  #这个文件目录需要记住,在yml文件中端口映射需要用到。
                index  index.html index.htm index.php; # 增加index.php
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   /var/www/html;
            }
            location ~ .php$ {
                root           /var/www/html; # 代码目录
                fastcgi_pass   phpfpm:9000;    # 修改为phpfpm容器
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; # 修改为$document_root
                include        fastcgi_params;
            }
        }
    
    • PHP-Dockerfile
    #基础镜像
    FROM  php:7.4-fpm
    #作者信息
    MAINTAINER ISLAND
    #更换镜像源
    RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
    #安装扩展pdo
    RUN apt-get clean && apt-get update && apt-get install -y 
    libfreetype6-dev 
    libjpeg62-turbo-dev 
    libpng12*-dev 
    vim 
    && docker-php-ext-install pdo_mysql 
    && docker-php-ext-configure gd --with-freetype --with-jpeg 
    && docker-php-ext-install gd 
    

    三、使用Compose实现多容器运行机制

    • YML文件
    version: "3"
    services:
     nginx:
       build: ./nginx
       ports:
         - "80:80"
       links:
         - "phpfpm"
       volumes:
         - ./web/:/var/www/html/
         - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
     phpfpm:
       build: ./php
       ports:
         - "9000:9000"
       volumes:
         - ./web/:/var/www/html/
       links:
         - "mysql"
     mysql:
       build: ./mysql
       ports:
         - "3306:3306"
       volumes:
         - ./mysql/mysql_data/:/var/lib/mysql/
    
    • 运行docker-compose
      docker-compose up -d

    四、服务测试

    • 数据库连接

    • 创建school数据库
    • 创建student表
    • 向student表中插入数据
    • 删除student表中数据

    五、选做

    • PHPMYADMIN-Dockerfile
    #基础镜像
    FROM phpmyadmin/phpmyadmin:latest
    #作者信息
    MAINTAINER ISALND
    #暴露端口
    EXPOSE 8080
    
    • YML文件
    version: "3"
    services:
     nginx:
       build: ./nginx
       ports:
         - "80:80"
       links:
         - "phpfpm"
       volumes:
         - ./web/:/var/www/html/
         - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
     phpfpm:
       build: ./php
       ports:
         - "9000:9000"
       volumes:
         - ./web/:/var/www/html/
       links:
         - "mysql"
     mysql:
       build: ./mysql
       ports:
         - "3306:3306"
       volumes:
         - ./mysql/mysql_data/:/var/lib/mysql/
     phpmyadmin:
       build: ./phpmyadmin
       ports:
         - "8080:80"
       links:
         - "mysql"
       environment:
         - PMA_ABRITRARY=1     
         - PMA_HOST=mysql 
    
    • 运行docker-compose
    • web端实现对数据库管理
      登入数据库

      其他对数据库的操作均是图形化界面。

    六、实验中遇到的问题以及解决方案

    • docker-compose使用官方方法安装过慢。
      使用daocloud的安装会快非常的多。
    • php容器中需要安装mysql插件的时候,用官方的源速度非常慢
      将镜像中的source.list换成国内源(例如网易源、阿里源)。
    • YML文件中web文件的存放路径
      在YML中要注意自己本机的路径要和容器中放web文件的路径相匹配。

    七、小结

    • 本次实验是让我们体验如何用docker-compose将多个容器配合起来使用,刚才是看到实验要求的时候感觉一点思路都没有,因为之前没有接触过PHP。后面在查阅多许多资料以后,然后自己在动手一步一步做下来,其实就不会感觉那么难。
    • 时间花费:
      了解PHP: 1小时
      了解PHP+Nginx:1小时
      dockerfile+yml编写:2小时
      解决运行时发生的问题:2小时
      测试:1小时
      博客编写:1.5小时
      合计:8.5小时
  • 相关阅读:
    ajax跨域
    抽奖概率计算
    应用版本
    empty
    java线程池原理
    java队列
    jquery选择器项目实例分析
    jquery操作dom
    40款非常棒的 jQuery 插件和制作教程(系列一)
    vijosP1046 观光旅游(最小环)
  • 原文地址:https://www.cnblogs.com/lokk/p/12828426.html
Copyright © 2011-2022 走看看