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小时
posted @ 2020-05-04 21:55  lokk  阅读(193)  评论(0编辑  收藏  举报