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

一、实现一个自定义的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');
原文地址:https://www.cnblogs.com/jay-home/p/12769783.html