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

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

    • 使用下列命令获取nginx镜像(建议使用镜像加速,不然下载的速度太慢了,心态会爆炸)
    docker pull nginx
    

    • 查看镜像
    docker images
    

    • 写dockerfile之前,需要把nginx的配置文件先写好,并和dockerfile放入同一文件夹下,我们先去运行一个nginx容器,找一下默认的配置,找的是default.conf,这个文件中含有配置默认目录的代码,把它复制出来。
    sudo docker run --name nginx-test -p 8080:80 -d nginx
    sudo docker exec -it [容器id] /bin/bash
    cd /etc/nginx/conf.d
    cat default.conf
    


    • 得到的default.conf的内容

    • 这里直接把终端里显示的内容复制到本地主机一个新的文件中,命名为default.conf,端口号修改为3600,并把root修改为自己的目录。

    • 创建一个自己的html文件

    • 创建Dockerfile文件

    • 关掉之前运行的容器,然后开始在自己的Dockerfile文件所在目录打开终端,开始构建自己的nginx镜像(特别注意命令后面还有一个点)
    docker build -t lyhnginx .
    
    • 运行容器
    docker run --name lyh_nginx -p 8080:3600 -d lyhnginx
    

    • 在网页上的显示

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

    docker pull mysql:5.7
    

    • 创建构建mysql镜像所需的文件(各个文件的具体内容见文末)

    • 构建mysql镜像,在Dockerfile所在的目录打开终端,运行命令
    docker build -t lyhmysql .
    

    • 运行容器
    docker run --name msql -p 3306:3306 -d lyhmysql
    

    • 查看是否创建成功
    docker ps
    

    • 进入容器
    docker exec -it msql /bin/bash
    

    • 使用指定用户名和密码进入数据库
    mysql -u lin -p
    

    • 查看已经存在的数据库
    show databases;
    

    • 进入数据库并且查表
    use docker_mysql
    select * from user;
    

    • 使用exit退出登录,然后使用root密码登录
    mysql -u root -p
    

    • 查看数据库

    • 查看mysql的配置信息
    show variables;
    

    • 使用exit退出这个容器,然后查看日志信息
    docker logs msql
    

    • 查看这个容器的信息
    sudo docker inspect msql
    

    构建nginx的文件

    • Dockerfile
    # Base images 基础镜像
    FROM nginx
    
    #MAINTAINER 维护者信息
    MAINTAINER lyh
    
    
    #WORKDIR 相当于cd
    WORKDIR /usr/lyhnginx/
    
    #复制配置文件及自己的web存放目录
    COPY default.conf /etc/nginx/conf.d/
    COPY index.html /usr/lyhnginx/
    
    #EXPOSE 映射端口
    EXPOSE 8080
    
    • default.conf配置文件
    server {
        listen       3600;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /usr/lyhnginx/;
            index  index.html index.htm;
        }
    
        #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           html;
        #    fastcgi_pass   127.0.0.1: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
    welcome to lyhnginx
    

    构建mysql的文件

    • Dockerfile
    #基础镜像
    FROM mysql:5.7
    
    #维护者信息
    MAINTAINER lyh
    
    #设置不允许空密码登陆,且设置root密码
    ENV MYSQL_ALLOW_EMPTY_PASSWORD no
    ENV MYSQL_ROOT_PASSWORD=lin123456
    
    #将所需文件放到容器中
    COPY setup.sh /mysql/setup.sh
    COPY schema.sql /mysql/schema.sql
    COPY privileges.sql /mysql/privileges.sql
    
    
    #设置容器启动时执行的命令
    CMD ["sh", "/mysql/setup.sh"]
    
    • schema.sql
    -- 创建数据库
    create database `docker_mysql` default character set utf8 collate utf8_general_ci;
    
    use docker_mysql;
    
    -- 建表
    DROP TABLE IF EXISTS user;
    
    CREATE TABLE user (
      `id` varchar(20) NOT NULL,
      `name` varchar(20) DEFAULT NULL,
      `sex` varchar(10) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
    -- 插入数据
    INSERT INTO user (`id`, `name`, `sex`)
    VALUES
        ('1111','lyh','man');
    
    • privileges.sql
    use mysql;
    select host, user from user;
    -- 因为mysql版本是5.7,因此新建用户为如下命令:
    create user lin identified by '123456';
    -- 将docker_mysql数据库的权限授权给创建的lin用户,密码为123456:
    grant all on docker_mysql.* to lin@'%' identified by '123456' with grant option;
    -- 这一条命令一定要有:
    flush privileges;
    
    • setup.sh
    #!/bin/bash
    set -e
    
    #查看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`
    echo `mysql容器启动完毕,且数据导入成功`
    
    tail -f /dev/null
    
  • 相关阅读:
    tyvj1463 智商问题
    P1070 道路游戏
    P1862 输油管道问题
    P1875 佳佳的魔法药水
    P1498 南蛮图腾
    P1489 猫狗大战
    P1395 会议(求树的重心)
    P2285 [HNOI2004]打鼹鼠
    P3819 松江1843路(洛谷月赛)
    P3818 小A和uim之大逃离 II(洛谷月赛)
  • 原文地址:https://www.cnblogs.com/lyhtsl/p/12748848.html
Copyright © 2011-2022 走看看