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 

  • 将可执行权限应用于二进制文件:
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
<?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 : 121212

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

sudo docker-compose up -d 

构建成功如下

四、服务测试

1.访问index.html

2.访问index.php

3.采用PDO连接数据库

修改 index.php内容为下

再次访问index.php

4.创建数据库

修改 index.php内容为下

再次访问index.php

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

5.创建一个名为student的表

修改 index.php内容为下

再次访问index.php

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

6.向表中插入数据

修改 index.php内容为下


再次访问index.php

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

7.删除表中数据

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

再次访问index.php

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

8.修改表中数据

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

再次访问index.php

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

五、选做:增加phpmyadmin容器

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

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

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

Dockerfile

#Dockerfile
FROM phpmyadmin/phpmyadmin:latest

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


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

六、问题和解决方法

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

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

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

posted @ 2020-05-06 23:08  大口吃肉  阅读(196)  评论(0编辑  收藏  举报