zoukankan      html  css  js  c++  java
  • 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的一些使用,但是还是有许多坑啊。

  • 相关阅读:
    【C++】深度探索C++对象模型读书笔记--关于对象(Object Lessons)
    【操作系统】调度算法
    【vim】vim常用命令
    【linux】linux的数据流重定向
    以太网帧,IP,TCP,UDP首部结构
    IPv4编址及子网划分
    【计算机网络】计算机网络模型
    【计算机网络】NAT:网络地址转换
    【设计模式】C++中的单例模式
    (转)linux查找技巧: find grep xargs
  • 原文地址:https://www.cnblogs.com/lyhtsl/p/12817923.html
Copyright © 2011-2022 走看看