第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

第3次实践作业_第1张图片

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

(2)Dockerfile编写

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

第3次实践作业_第2张图片

  • dockerfile_nginx
#基础镜像
FROM nginx
#作者信息
MAINTAINER by ruifeng1<[email protected]>
#声明暴露的端口
EXPOSE 2020
  • dockerfile_mysql
#基础镜像
FROM mysql
#作者信息
MAINTAINER by ruifeng1<[email protected]>
#设置root密码
ENV MYSQL_ROOT_PASSWORD 123456
#设置不可免密登录
ENV MYSQL_ALLOW_EMPTY_PASSWORD no
  • dockerfile_php
#基础镜像
FROM php:7.4-fpm
#作者信息
MAINTAINER by ruifeng1<[email protected]>
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


    
        MyNginx
    
    
        

hello world

welcome to 031702533

  • index.php

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

  • 运行docker-compose

第3次实践作业_第3张图片

  • 查看容器和镜像

第3次实践作业_第4张图片

  • 访问网站

第3次实践作业_第5张图片

(4)服务测试

  • 连接测试
  • 修改index.php
 getMessage();
    }
    ?>

第3次实践作业_第6张图片

  • 创建数据库
  • 修改index.php
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "CREATE DATABASE test";

    // 使用 exec() ,因为没有结果返回
    $conn->exec($sql);

    echo "数据库创建成功
"; } catch(PDOException $e) { echo $sql . "
" . $e->getMessage(); } $conn = null; ?>

第3次实践作业_第7张图片

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

第3次实践作业_第8张图片

  • 创建数据表
  • 修改index.php
        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 . "
" . $e->getMessage(); } $conn = null; ?>

查看数据表

    use test
    show tables;

第3次实践作业_第9张图片

  • 插入数据
修改index.php
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 开始事务
    $conn->beginTransaction();
    // SQL 语句
    $conn->exec("INSERT INTO test (`id`, `name`,`email`)
	VALUES(100,'john','[email protected]');");
    $conn->exec("INSERT INTO test (`id`, `name`,`email`)
	VALUES(31702115,'lzs','[email protected]');");

    // 提交事务
    $conn->commit();
    echo "新记录插入成功";
}    
catch(PDOException $e)
{
    // 如果执行失败回滚
    $conn->rollback();
    echo $sql . "
" . $e->getMessage(); } $conn = null; ?>

第3次实践作业_第10张图片
第3次实践作业_第11张图片

  • 删除数据
  • 修改index.php
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 . "
" . $e->getMessage(); } $conn = null; ?>

第3次实践作业_第12张图片
第3次实践作业_第13张图片

(5)总结

  • 遇到的问题
    1.使用官方渠道下载docker-compose速度过慢
    2.使用网上的换源方案时,发现sudo指令权限依然不够,于是直接使用sudo -i登录root用户,执行成功
    3.运行docker-compose时,php构建失败,原因是执行apt-get update时失败
    4.运行docker-compose时,进行访问网站操作,出现了连接被重置的问题
    总用时:12小时

你可能感兴趣的:(第3次实践作业)