zoukankan      html  css  js  c++  java
  • 第3次实践作业

    (1)完成Docker-compose的安装

    • 由于官方提供的下载方式速度过慢,从网上找到了换源的方案

    • 进入root用户

    sudo -i
    
    • 进行Docker-compose安装
    curl -L "https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    

    • 查看安装是否成功
    docker-compose --version
    

    (2)Dockerfile编写

    • 选择LNMP(Linux+Nginx+Mysql+PHP)完成实验
    • 目录结构

    • dockerfile_nginx
    #基础镜像
    FROM nginx
    #作者信息
    MAINTAINER by ruifeng1<460886524@qq.com>
    #声明暴露的端口
    EXPOSE 2020
    
    • dockerfile_mysql
    #基础镜像
    FROM mysql
    #作者信息
    MAINTAINER by ruifeng1<460886524@qq.com>
    #设置root密码
    ENV MYSQL_ROOT_PASSWORD 123456
    #设置不可免密登录
    ENV MYSQL_ALLOW_EMPTY_PASSWORD no
    
    • dockerfile_php
    #基础镜像
    FROM php:7.4-fpm
    #作者信息
    MAINTAINER by ruifeng1<460886524@qq.com>
    FROM php:7.4-fpm
    RUN apt-get update && apt-get install -y 
            libfreetype6-dev 
            libjpeg62-turbo-dev 
            libpng-dev 
        && docker-php-ext-install pdo_mysql 
        && docker-php-ext-configure gd --with-freetype --with-jpeg 
        && docker-php-ext-install -j$(nproc) gd
    
    • default.conf
    server {
        listen       2020; #修改映射端口
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /home/docker_compose/html; #修改工作目录
            index  index.html index.htm 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   /usr/share/nginx/html;
        }
    
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ .php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
    
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ .php$ {
        #    root           /home/docker_compose/php; #修改工作目录
        #    fastcgi_pass   lrfphp:9000; #修改为容器名
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
    
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /.ht {
        #    deny  all;
        #}
    }
    
    • index.html
    <!DOCTYPE html>
    <html>
        <head>
            <title>MyNginx</title>
        </head>
        <body>
            <h1>hello world</h1>
            <h1>welcome to 031702533</h1>
        </body>
    </html>
    
    • index.php
    <?php phpinfo();?>
    

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

    • 运行docker-compose

    • 查看容器和镜像

    • 访问网站

    (4)服务测试

    • 连接测试
    • 修改index.php
     <?php
        $servername = "lzssql";
        $username = "root";
        $password = "123456";
    
        try {
            $conn = new PDO("mysql:host=$servername;", $username, $password);
            echo "连接成功"; 
        }
        catch(PDOException $e)
        {
            echo $e->getMessage();
        }
        ?>
    

    • 创建数据库
    • 修改index.php
    <?php
    $servername = "lzssql";
    $username = "root";
    $password = "123456";
    
    try {
        $conn = new PDO("mysql:host=$servername", $username, $password);
    
        // 设置 PDO 错误模式为异常
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "CREATE DATABASE test";
    
        // 使用 exec() ,因为没有结果返回
        $conn->exec($sql);
    
        echo "数据库创建成功<br>";
    }
    catch(PDOException $e)
    {
        echo $sql . "<br>" . $e->getMessage();
    }
    $conn = null;
    ?>
    

    • 查看数据库信息
    docker exec -it lzssql /bin/bash
    mysql -u root -p
    show databases;
    

    • 创建数据表
    • 修改index.php
            <?php
    $servername = "lzssql";
    $username = "root";
    $password = "123456";
    $dbname="test";    
    
    try {
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        // 设置 PDO 错误模式,用于抛出异常
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        // 使用 sql 创建数据表
        $sql = "CREATE TABLE test (
     	id bigint(20) NOT NULL,
     	name varchar(255) NOT NULL,
     	email varchar(255) NOT NULL
    	)";
        // 使用 exec() ,没有结果返回 
        $conn->exec($sql);
        echo "数据表创建成功";
    }
    catch(PDOException $e)
    {
        echo $sql . "<br>" . $e->getMessage();
    }
    $conn = null;
    ?>
    

    查看数据表

        use test
        show tables;
    

    • 插入数据
    修改index.php
    <?php
    $servername = "lzssql";
    $username = "root";
    $password = "123456";
    $dbname="test";    
    
    try {
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        // set the PDO error mode to exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
        // 开始事务
        $conn->beginTransaction();
        // SQL 语句
        $conn->exec("INSERT INTO test (`id`, `name`,`email`)
    	VALUES(100,'john','1345311153@qq.com');");
        $conn->exec("INSERT INTO test (`id`, `name`,`email`)
    	VALUES(31702115,'lzs','1345311153@qq.com');");
    
        // 提交事务
        $conn->commit();
        echo "新记录插入成功";
    }    
    catch(PDOException $e)
    {
        // 如果执行失败回滚
        $conn->rollback();
        echo $sql . "<br>" . $e->getMessage();
    }
    
    $conn = null;
    ?>
    


    • 删除数据
    • 修改index.php
    <?php
    $servername = "lzssql";
    $username = "root";
    $password = "123456";
    $dbname="test";    
    
    try {
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        // set the PDO error mode to exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
        // 开始事务
        $conn->beginTransaction();
        // SQL 语句
        $conn->exec("delete from test where id=100");
    
        // 提交事务
        $conn->commit();
        echo "记录删除成功";
    }    
    catch(PDOException $e)
    {
        // 如果执行失败回滚
        $conn->rollback();
        echo $sql . "<br>" . $e->getMessage();
    }
    
    $conn = null;
    ?>
    


    (5)总结

    • 遇到的问题
      1.使用官方渠道下载docker-compose速度过慢
      2.使用网上的换源方案时,发现sudo指令权限依然不够,于是直接使用sudo -i登录root用户,执行成功
      3.运行docker-compose时,php构建失败,原因是执行apt-get update时失败
      4.运行docker-compose时,进行访问网站操作,出现了连接被重置的问题
      总用时:12小时
  • 相关阅读:
    怎么与用户有效的沟通以获取用户的真实需求?
    面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?
    当下大部分互联网创业公司为什么都愿意采用增量模型来做开发?
    【第八周】回到起点,从头再来
    【第七周作业】项目开发心得
    【第六周作业】项目代码的编写规范
    【第五周作业】寸步难行
    【第四周作业】参加项目开发之后的一些体会
    【第三周作业】对于软件工程学的一些理解
    【第二周作业】面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?
  • 原文地址:https://www.cnblogs.com/ruifeng1/p/12854343.html
Copyright © 2011-2022 走看看