zoukankan      html  css  js  c++  java
  • 2017级系统综合实践 第2次实践作业

    作业链接

    (1) 实现一个自定义的web容器服务

    • 获取 nginx 镜像

    • 查看镜像情况

    • 运行 nginx 容器,并查看容器的工作目录

    • 修改 nginx 的 web 存放目录

    • 编辑 dockerfile

    • 构建镜像

    • 创建容器验证结果

    (2) 实现一个自定义的数据库容器服务

    • pull mysql 5.7

    • 为了便于管理,创建 mysql 文件夹,包含以下文件

      • 编写 Dockerfile

        FROM mysql:5.7
        #基础镜像
        
        maintainer huaranmeng
        #维护者信息
        
        ENV MYSQL_ALLOW_EMPTY_PASSWORD no
        #不允许空密码登录
        
        ENV MYSQL_ROOT_PASSWORD=123456
        #root密码
        
        COPY setup.sh /mysql/setup.sh
        COPY schema.sql /mysql/schema.sql
        COPY privileges.sql /mysql/privileges.sql
        #所需文件
        
        CMD ["sh", "/mysql/setup.sh"]
        #启动命令
        
      • 编写容器启动脚本 setup.sh

        #查看mysql服务的状态,方便调试,这条语句可以删除
        echo `service mysql status`
        
        echo '1.启动mysql....'
        #启动mysql
        service mysql start
        sleep 3
        echo `service mysql status`
        
        echo '2.开始导入数据....'
        #导入数据
        mysql < /mysql/schema.sql
        echo '3.导入数据完毕....'
        
        sleep 3
        echo `service mysql status`
        
        #重新设置mysql密码
        echo '4.开始修改密码....'
        mysql < /mysql/privileges.sql
        echo '5.修改密码完毕....'
        
        #sleep 3
        echo `service mysql status`
        
      • 需要导入数据的 mysql 脚本命令 schema.sql

        -- 创建数据库
        create database `docker_mysql` default character set utf8 collate utf8_general_ci;
        
        use docker_mysql;
        
        -- 建表
        DROP TABLE IF EXISTS test;
        
        CREATE TABLE test (
         `id` bigint(20) NOT NULL,
         `name` varchar(255) DEFAULT ""
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
        
        -- 插入数据
        INSERT INTO test (`id`, `name`)
        VALUES
        (33999,'hrm');
        
      • mysql 权限设置命令 privileges.sql

        use mysql;
        select host, user from user;
        -- 因为mysql版本是5.7,因此新建用户为如下命令:
        create user docker identified by '123456';
        -- 将docker_mysql数据库的权限授权给创建的docker用户,密码为123456:
        grant all on docker_mysql.* to docker@'%' identified by '123456' with grant option;
        -- 这一条命令一定要有:
        flush privileges;
        
    • 创建镜像

    • 运行容器

    • 查看容器

    • 进入容器,并使用 docker 用户登录数据库

      docker exec -it [容器id] /bin/bash
      

    • 切换到 docker_mysql 数据库

    • 查看 test 表中的数据

    • 退出,使用 root 登录

    • 查看数据库

  • 相关阅读:
    超过经理收入的员工
    搜索插入位置
    整数反转
    俩数之和
    tar 命令参数解释
    【记录】Transaction rolled back because it has been marked as rollback-only
    【转载】BIO、NIO、AIO
    【转载】JDK自带的log工具
    【转载】java8中的Calendar日期对象(LocalDateTime)
    【对象属性复制】BeanUtils.copyProperties(obj1, obj2);
  • 原文地址:https://www.cnblogs.com/huaranmeng/p/12763150.html
Copyright © 2011-2022 走看看