• 系统综合实践第二次实践作业


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

    1-拉取nginx镜像

      似乎在菜鸟教程上的Deckfile运用,是不需要这步的。(Deckfile内的FROM指令会自动拉取源镜像然后展开配置)

      但参考大佬的范例,这步应该为了获得web存放目录的相关配置文件,即后面的defualt.conf。

      

    2-使用容器打开镜像,进入相关路径查看deflaut.conf配置文件

      可以看到上面有我们所需要修改的信

      

    3、复制文件并进行修改

      

      

     4、写Dockerfile文件,并在上下文路径来拉取定制nginx镜像

      

       

      似乎其中的echo指令格式错了,修改后即成功

      

    4、通过相关容器连接,并指定相关端口来开启web服务。

        

       在浏览器访问web服务时发生错误...非常悲催

      

      镜像是存在的,相关容器也有开启,端口也不存在占用问题,花了很久都没发现问题。一直以为是端口8080:8080的映射问题。

      后来重新检查配置文件发现,其实是路径写错误了...应该放在讲defualt.conf文件放在etc/nginx/conf/里面

      

       修改后成功

      

    附:Dockerfile和deflaut配置文件

    Dockfile:

    FROM nginx
    
    #MAINTAINER IFORMATION
    MAINTAINER jayer@xiajibaxie.com
    
    #WORKDIR
    WORKDIR /usr/mynginx/
    
    #CONFIGURATION
    COPY default.conf /etc/nginx/conf.d/
    
    #INDEX
    RUN echo "This is jayer'nginx images" >> /usr/mynginx/index.html
    
    #EXPOSE
    EXPOSE 8080

    defualt.conf: 

    server {
        listen       8080;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /usr/mynginx/;
            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;
        #}
    }

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

    1、展开Deckfile和相关文件的配置  

      

    2、拉取定制镜像

       

     3、容器连接,并进去容器

       

       

    • PS:中间偶遇容器没有运行的BUG

      

       查看日志追根溯源发现应该是在schema.sql文件里面,那里的表格名字写错了

      

      。。。成功后的日志文件

      

     4、用户名登入

      

    5、查看数据库和表

      

    6、root用户登入

      

     7、查看配置

      

    8、查看容器信息

      

     附:Dockerfile和相关配置文件

    Dockerfile:

    FROM mysql:5.7
    
    #MAINTAINER INFORMATION
    MAINTAINER jayer@xiajibaxie.com
    
    #EVIRONMENT
    ENV MYSQL_ALLOW_EMPTY_PASSWORD no
    ENV MYSQL_ROOT_PASSWORD=123
    
    #CONFIGURATION
    COPY setup.sh /mysql/setup.sh
    COPY schema.sql /mysql/schema.sql
    COPY privileges.sql /mysql/privileges.sql
    
    #COMMAND
    CMD ["sh", "/mysql/setup.sh"]

    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
    ~   

    privileges.sql:

    use mysql;
    select host, user from user;
    create user jayer identified by '123456';
    grant all on docker_mysql.* to jayer@'%' identified by '123456' with grant option;
    flush privileges;

    schema.sql:

    create database `docker_mysql` default character set utf8 collate utf8_general_ci;
    
    use docker_mysql;
    
    
    DROP TABLE IF EXISTS Stu;
    
    CREATE TABLE Stu (
      `Num` varchar(20) NOT NULL,
      `Name` varchar(20) DEFAULT NULL,
      `Class` varchar(10) DEFAULT NULL,
      PRIMARY KEY (`Num`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
    INSERT INTO Stu (`Num`, `Name`, `Class`)
    VALUES
        ('123','jayer','1');
  • 相关阅读:
    spring 管理struts2的一个问题
    Log4j的使用
    json
    jbpm
    jbpm的开发流程
    HTML5 INPUT新增属性
    JQuery Mobile
    struts2配置中通配符
    2010新的开始,先留个脚印。:)
    EyesBaby1.0使用帮助文档
  • 原文地址:https://www.cnblogs.com/jay-home/p/12769783.html
Copyright © 2020-2023  润新知