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

完成Docker-compose的安装

参考资料:Install 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 docker-compose 配置lnmp开发环境

  • 使用docker pull 下载各自的镜像(nginx 与mysql已经下载了)

  • 创建如下各个文件

请注意是default.conf文件,图片中少了一个t。

html

#index.html
welcome to lyhnginx 

#index.php
<?php phpinfo();?>

mysql

#Dockerfile
#基础镜像
FROM mysql:5.7

#维护者信息
MAINTAINER lyh

nginx

#Dockerfile
# Base images 基础镜像
FROM nginx:latest

#MAINTAINER 维护者信息
MAINTAINER lyh

#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;
        }
    }

phpfpm

#Dockerfile
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 

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

参考资料:Docker docker-compose 配置lnmp开发环境

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
  • 在compose文件夹打开终端

sudo su
docker-compose up -d

  • 构建成功如下

服务测试

参考资料:菜鸟教程

  • 测试访问index.html和index.php,

我装的PHP有PDO,所以采用PDO去连接数据库并进行操作

  • 尝试连接mysql

servername我采用本地的IP地址

在web显示

  • 创建数据库

编辑index.php

web显示

用终端进入mysql容器,查看数据库是否创建成功

  • 在数据库内建表

web显示

在容器中查看建表是否成功

  • 插入数据

web显示

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

  • 修改数据

web显示

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

  • 删除数据

web显示

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

增加phpmyadmin

  • pull phpmyadmin

  • 在文件夹compose中创建如下文件

Dockerfile

#Dockerfile
FROM phpmyadmin/phpmyadmin:latest

在docker-compose.yml文件末端加上

 phpmyadmin:
    build: ./phpmyadmin
    container_name: "phpmyadmin"
    ports:
     - "9090:80"
    links:
     - "mysql"
    environment:
     - PMA_ARBITRARY=1  
  • 在web端使用phpmyadmin

  • 用自己数据库的账号密码进入

  • 之前建的数据库

  • 使用phpmyadmin插入数据

  • 使用phpmyadmin查看结果

  • 使用终端查看

遇到的困难

  • 创建LNMP环境时nginx报错。
    我的default文件文件名打错了,害我百度了半天,所以还是要注意这些细节
  • 使用php连接MySQL失败

使用localhost作为servername时出现下列错误

使用127.0.0.1作为servername时出现下列错误

最终我直接使用本机的IP地址才成功
可以使用ifconfig -a查看IP地址

这次作业大约用了我12个小时左右吧,对于这些镜像的了解更深了,也了解了docker compose的一些使用,但是还是有许多坑啊。

原文地址:https://www.cnblogs.com/lyhtsl/p/12817923.html