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

一、Docker Compose的安装

  • 因为直接用curl命令下载太慢了,所以我换了其他的下载方法,解决github release下载过慢的方法我会在文章后面的问题及解决方法中说明。
    我们把docker compose下载过后,放到指定的文件夹中。因为我是在主机中下载的,然后直接放在共享文件夹中,在虚拟机中,从共享文件夹复制到指定的文件夹。

  • 将可执行权限应用于二进制文件

sudo chmod +x /usr/local/bin/docker-compose

  • 创建软链
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  • 测试是否安装成功,如图,如果显示出版本号即代表安装成功
docker-compose --version

二、Dockerfile编写(LNMP)

Nginx

#Dockerfile
FROM nginx:latest

#default.conf
server {
        listen       80;
        server_name  localhost;
    
        location / {
            root   /var/www/html;
            index  index.html index.htm index.php; # 增加index.php
        }
    
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        #
        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;
        }
    }

mysql

#Dockerfile
FROM mysql:5.7

php

FROM php:5.6-fpm

RUN 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-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install gd \

web

#index.html
NGINX SUCCESS

#index.php
<?php phpinfo();?>
  • 最后文件结构如图。

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

yml文件

#docker-compose.yml
version: "3"
services:
 nginx:
   build: ./nginx
   ports:
     - "80:80"
   links:
     - "phpfpm"
   volumes:
     - ./html/:/var/www/html/
     - ./nginx/conf/default.conf:/etc/nginx/conf.d/default.conf
 phpfpm:
   build: ./phpfpm
   ports:
     - "9000:9000"
   volumes:
     - ./html/:/var/www/html/
   links:
     - "mysql"
 mysql:
   build: ./mysql
   ports:
     - "3306:3306"
   volumes:
     - ./mysql/data/:/var/lib/mysql/
   environment:
     MYSQL_ROOT_PASSWORD : 123456

  • 接下来我们使用docker compose来构建LNMP环境,进入存放构建环境的文件的文件夹内打开终端。
sudo docker-compose up -d

四、服务测试

  • 参考菜鸟教程---PHP PDO

  • 首先测试去访问index.html和index.php,如图。

  • 因为我装的PHP只有PDO,其他的模块好像没有,所以本次就用PDO去连接数据库并进行操作,可在php配置信息的页面中找到,就是我的index.php里的内容。

  • 首先我们尝试去连接mysql,如图,连接成功,我在这里修改了一些内容,把servername改成自己的ip地址,可能是因为我在大数据实验中改了一些本机的地址配置,所以才需要这样做,正常情况下应该使用localhost就可以。建议在安装php的时候装一个vim编辑器,直接在PHP容器里修改index.php,然后主机通过浏览器访问index.php就可以,也可以在挂载的目录里修改index.php。vim还可以修改php容器中其他配置文件,比较方便。

  • 我们线尝试用PHP去创建一个数据库,如图创建成功,在PHP容器中编辑index.php,创建一个名为mytest的数据库。

  • 在mysql容器中可以看到这个数据库已经创建完成。

  • 接下来创建一个名为Students的表

  • 显示创建成功,然后到mysql容器中查看是否有这个表,可以看到已经有这个表了。

  • 下一步尝试去插入一些数据到这个表中。

  • 我们到mysql容器中去查看是否插入成功,如图,插入成功,并且数据和我们输入的一样。这里用到了事务和回滚很好,因为是插入多条数据,如果插入数据失败不会造成数据库内的数据混乱。

  • 接下来去修改学号为111111111同学的专业,也就是修改表内数据。

  • 可以看到,该同学的专业已经被修改为electronic engineering。

  • 最后我们进行删除测试,删除学号为222222222的同学这条数据。

  • 如图,表内已经没有该同学的数据,测试完毕,基本的数据库操作都可以使用。

五、phpmyadmin的增加

有空更新。

问题&解决方法

  • github中下载docker compose过慢怎么办?

    • 当时下载的时候显示剩余时间三十多个小时,我就直接放弃了官方文档给出的方法,而且这个好像也没有办法换下载源,后来在网上查到一种解决方法,速度不算很快,但是下载一个小文件还是够用了,几分钟就可以搞定。我这里已经操作过一次,如果和我版本相同的可以直接点击下载---docker-compose-Linux-x86_64百度网盘下载,提取码6jz8。下载好之后为了按照教程中的流程走,注意改一下名称,并且把它移到指定的位置。下面是下载的操作流程。
      点击这个网站注册一个账号,只需要一个邮箱即可offcloud,注册登录之后,可以见到左侧有instant选项,点击进入。

      之后再把需要下载的文件地址输入中间的框中,再点击download即可。
  • PHP无法连接到mysql,显示没有改文件或目录。

    • 因为我的大数据实验课也是用这台虚拟机做的实验,我配置了静态ip地址,并且把localhost修改了,可能是因为这个原因,servername换成我的静态ip地址就可以正常运行。
  • 创建LNMP环境时nginx会报错。

    • 注意参考博客中的目录和我们自己的目录一般是不一样的,需要修改yml文件里的目录。
  • Tips:

    • 在PHP容器要安装PDO等和数据库连接的model,还有建议在PHP容器内安装一个vim,到时候修改文件比较方便,或者直接在你挂载的目录里修改都可以。
    • 有一些小小的错误可能就卡我了一个小时,另外还需要注意的是index.php中的语句语法一定要仔细检测,有时候连接出错可能就是语句有问题,比如说单词拼错,少写一个分号等等,很不容易检查出来,所以一定要细心细心细心。
    • 需要查询PHP文件配置时可在PHP配置显示的网页查看,就是我最初的index.php中。

小结

docker compose其实并不难使用,难的地方是容器的配置,我对这些容器的配置基本上不了解,只能上网一篇一篇翻博客去查找,在查找资料的过程也是一种学习,从最初的想着完成难度太大,到最后一步一步做完,完成测试后我有种恍然大悟的感觉。这期间过程很难,一些简单的错误可能卡我数十分钟,而且还不能完全按照博客的去做,有些地方比如说路径,每个人都是不同的,这个时候就需要去理解这一步为什么这样做,我的该改成什么样,而不是简单的直接搬过来。没有能直接搬过来的博客,都需要自己理解和加工修改。同一个错误也可能有不同的原因,每个人不都是相同的,这个时候也需要自己一个一个去排查。

时间花费

基本任务+博客9小时。附加的选做?小时。

猜你喜欢

转载自www.cnblogs.com/ambition-hhn/p/12772003.html