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

一、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 

2020系统综合实践 第3次实践作业_第1张图片

  • 将可执行权限应用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose 
  • 创建软链:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose 
  • 测试是否安装成功,如图,安装成功
docker-compose --version

二、Dockerfile编写

创建一个docker_Compose文件夹,然后在文件夹里创建如下各个文件

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

phpfpm

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 \

html

#index.html
Success!Congratulations! 

#index.php

最后文件结构如图
2020系统综合实践 第3次实践作业_第2张图片

三、使用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 : 121212

使用docker compose来构建LNMP环境 ,在docker_compose文件夹内打开终端

sudo docker-compose up -d 

2020系统综合实践 第3次实践作业_第3张图片

构建成功如下

2020系统综合实践 第3次实践作业_第4张图片

四、服务测试

1.访问index.html

2.访问index.php

2020系统综合实践 第3次实践作业_第5张图片

3.采用PDO连接数据库

修改 index.php内容为下

2020系统综合实践 第3次实践作业_第6张图片

再次访问index.php

2020系统综合实践 第3次实践作业_第7张图片

4.创建数据库

修改 index.php内容为下

2020系统综合实践 第3次实践作业_第8张图片

再次访问index.php

用终端进入mysql容器,可以看到这个数据库已经创建完成

2020系统综合实践 第3次实践作业_第9张图片

2020系统综合实践 第3次实践作业_第10张图片

5.创建一个名为student的表

修改 index.php内容为下

2020系统综合实践 第3次实践作业_第11张图片

再次访问index.php

在容器中看到已经有这个表了

2020系统综合实践 第3次实践作业_第12张图片

6.向表中插入数据

修改 index.php内容为下

2020系统综合实践 第3次实践作业_第13张图片
2020系统综合实践 第3次实践作业_第14张图片

再次访问index.php

在容器中查看插入数据是否成功

2020系统综合实践 第3次实践作业_第15张图片

7.删除表中数据

只需要将上面的sql语句改为

再次访问index.php

在容器中查看删除数据是否成功

2020系统综合实践 第3次实践作业_第16张图片

8.修改表中数据

只需要将上面的sql语句改为

再次访问index.php

在容器中查看修改数据是否成功

2020系统综合实践 第3次实践作业_第17张图片

五、选做:增加phpmyadmin容器

1.在原来的yml文件后面加上这几行,就是增加一个新的容器phpmyadmin

phpmyadmin:
    build: ./phpmyadmin
    container_name: "phpmyadmin"
    ports:
     - "9090:80"
    links:
     - "mysql"
    environment:
     - PMA_ARBITRARY=1  

2.在文件夹docker_compose中多创建如下文件

2020系统综合实践 第3次实践作业_第18张图片

Dockerfile

#Dockerfile
FROM phpmyadmin/phpmyadmin:latest

3.执行 sudo docker-compose up -d命令


4.访问http://localhost:9090/,可以看到之前实验中的数据库、表及表中的数据

2020系统综合实践 第3次实践作业_第19张图片

2020系统综合实践 第3次实践作业_第20张图片

六、问题和解决方法

1.一开始docker compose下载的非常慢,都是要等七八个小时,试了好多次,也换了网络,还是一直不行,后来突然有一次变快了,五分钟下好了。。。

2.采用PDO连接数据库时会出现如下第一张图的问题,把servername改了之后又会出现如下第二张图的问题,后来把密码改成和yml文件中一样的就可以了。(前面一直改yml文件中的密码,让它和index.php文件中一致,可是改完yml文件中的密码问题还是存在,后来发现yml文件中密码改完要重新运行,所以还是改index.php中的比较方便)

3.总共耗时约10h(包括写博客)

你可能感兴趣的:(2020系统综合实践 第3次实践作业)