2020系统综合实践 第3次实践作业
完成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的一些使用,但是还是有许多坑啊。
                    
                
                
            
        
浙公网安备 33010602011771号