Dockerfile 实践 nginx镜像构建

先查看下本地的镜像,选取官网的centos作为base image:

[root@server ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 1e1148e4cc2c weeks ago 202MB

创建一个目录用于专门存放此demo的目录,也就是Dockerfile所在的目录

[root@server ~]# mkdir myNginx
[root@server ~]# cd myNginx/
[root@server myNginx]# touch Dockerfile
[root@server myNginx]# ll
总用量
-rw-r--r-- root root 1月 : Dockerfile

下面开始编写Dockerfile 文件,(注意Dockerfile的D需要大写)

v1版:

[root@server myNginx]# cat Dockerfile
# 指定基础镜像
FROM centos # MAINTAINER
MAINTAINER @qq.com # 安装基础工具包
RUN yum -y install wget gcc gcc-c++ glibc make autoconf openssl openssl-devel libxml2 libxml2-dev libxslt-devel gd-devel GeoIP GeoIP-devel GeoIP-data # 下载nginx
ADD http://nginx.org/download/nginx-1.12.2.tar.gz /opt/nginx/ # 解压nginx 并创建用户
RUN tar -xvzf /opt/nginx/nginx-1.12..tar.gz -C /usr/local/src/ \
&& useradd -M -s /sbin/nologin nginx # 更改工作目录
WORKDIR /usr/local/src/nginx-1.12. # 编译安装nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install # 删除多余安装包
RUN rm -rf /opt/nginx/nginx-1.12..tar.gz # 设置环境变量
ENV PATH=/usr/local/nginx/sbin:$PATH # 设置端口
EXPOSE

执行docker build 进行构建:

[root@server myNginx]# ll
总用量
-rw-r--r-- root root 1月 : Dockerfile
[root@server myNginx]# docker build -t centos_nginx:v1 .

此处构建有点慢,因为需要安装编译nginx需要用到的软件,及下载nginx;后面的.代表的是相对路径的当前目录,如果需要全路径则为/root/myNginx(就是找到Dockerfile文件)

构建成功后,查看新构建的镜像:

[root@server myNginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v1 13d959cbec2b About a minute ago 504MB
centos latest 1e1148e4cc2c weeks ago 202MB

使用v1版本的镜像启动一个容器:

[root@server myNginx]# docker run -d -p : centos_nginx:v1 nginx -g "daemon off;"
961ef4274078b61a56667293ef69ee881fbf4171156c7990c94225eb508a172c

查看容器运行状态:

[root@server myNginx]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
961ef4274078 centos_nginx:v1 "nginx -g 'daemon of…" seconds ago Up seconds 0.0.0.0:->/tcp mystifying_goldberg

进行访问:

这样基于Dockerfile的一个简单的实例构建完成,现在基于这个Dockerfile文件依次添加其它指令进行构建

添加CMD 指令:

[root@server myNginx]# cat Dockerfile
# 指定基础镜像
FROM centos # MAINTAINER
MAINTAINER @qq.com # 安装基础工具包
RUN yum -y install wget gcc gcc-c++ glibc make autoconf openssl openssl-devel libxml2 libxml2-dev libxslt-devel gd-devel GeoIP GeoIP-devel GeoIP-data # 下载nginx
ADD http://nginx.org/download/nginx-1.12.2.tar.gz /opt/nginx/ # 解压nginx 并创建用户
RUN tar -xvzf /opt/nginx/nginx-1.12..tar.gz -C /usr/local/src/ \
&& useradd -M -s /sbin/nologin nginx # 更改工作目录
WORKDIR /usr/local/src/nginx-1.12. # 编译安装nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install # 删除多余安装包
RUN rm -rf /opt/nginx/nginx-1.12..tar.gz # 设置环境变量
ENV PATH=/usr/local/nginx/sbin:$PATH # 设置端口
EXPOSE CMD /bin/sh -c 'nginx -g "daemon off;"'

然后进行构建v2版本:

[root@server myNginx]# docker build -t centos_nginx:v2 .
Sending build context to Docker daemon .072kB
Step / : FROM centos
---> 1e1148e4cc2c
Step / : MAINTAINER @qq.com
---> Using cache
---> d41475691003
Step / : RUN yum -y install wget gcc gcc-c++ glibc make autoconf openssl openssl-devel libxml2 libxml2-dev libxslt-devel gd-devel GeoIP GeoIP-devel GeoIP-data
---> Using cache
---> 7739a6cdd37c
Step / : ADD http://nginx.org/download/nginx-1.12.2.tar.gz /opt/nginx/
Downloading [==================================================>] .7kB/.7kB
---> Using cache
---> a58676d797ad
Step / : RUN tar -xvzf /opt/nginx/nginx-1.12..tar.gz -C /usr/local/src/ && useradd -M -s /sbin/nologin nginx
---> Using cache
---> 7f671453fc20
Step / : WORKDIR /usr/local/src/nginx-1.12.
---> Using cache
---> be296a9725ea
Step / : RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install
---> Using cache
---> fcbc1da221cc
Step / : RUN rm -rf /opt/nginx/nginx-1.12..tar.gz
---> Using cache
---> 2189ac28a36f
Step / : ENV PATH=/usr/local/nginx/sbin:$PATH
---> Using cache
---> 70faf0a90e9f
Step / : EXPOSE
---> Using cache
---> 13d959cbec2b
Step / : CMD /bin/sh -c 'nginx -g "daemon off;"'
---> Running in d07896b5ba56
Removing intermediate container d07896b5ba56
---> 3b71646263d3
Successfully built 3b71646263d3
Successfully tagged centos_nginx:v2

由于在构建的过程中docker 会采用缓存机制,上面构建过程中包含很多using cache,所以这次构件非常快,如果需要重新构建,不想使用cache 需要添加 --no-cache

查看v2版本的镜像:

[root@server myNginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v2 3b71646263d3 minutes ago 504MB

使用v2版本的镜像启动一个容器:

[root@server myNginx]# docker run -d -p : centos_nginx:v2
934ddc6f56a48f59b405c75c19b40ce5156388e34de37c078a56abc7c08a0602

然后查看容器状态:

[root@server myNginx]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
934ddc6f56a4 centos_nginx:v2 "/bin/sh -c '/bin/sh…" seconds ago Up seconds 0.0.0.0:->/tcp pedantic_cocks

进行访问:

新增加的CMD /bin/sh -c 'nginx -g "daemon off;"' 表示

当启动一个容器时候默认运行的命令,如果在启动容器时赋予了command的话,那么定义的CMD中的命令将不会被执行,而会去执行command的命令

添加ENTRYPOINT 指令:

[root@server myNginx]# cat Dockerfile
# 指定基础镜像
FROM centos # MAINTAINER
MAINTAINER @qq.com # 安装基础工具包
RUN yum -y install wget gcc gcc-c++ glibc make autoconf openssl openssl-devel libxml2 libxml2-dev libxslt-devel gd-devel GeoIP GeoIP-devel GeoIP-data # 下载nginx
ADD http://nginx.org/download/nginx-1.12.2.tar.gz /opt/nginx/ # 解压nginx 并创建用户
RUN tar -xvzf /opt/nginx/nginx-1.12..tar.gz -C /usr/local/src/ \
&& useradd -M -s /sbin/nologin nginx # 更改工作目录
WORKDIR /usr/local/src/nginx-1.12. # 编译安装nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install # 删除多余安装包
RUN rm -rf /opt/nginx/nginx-1.12..tar.gz # 设置环境变量
ENV PATH=/usr/local/nginx/sbin:$PATH # 设置端口
EXPOSE ENTRYPOINT ["nginx"] CMD ["-g", "daemon off;"]

当ENTRYPOINT和CMD连用时,CMD的命令是ENTRYPOINT命令的参数,两者连用相当于nginx -g "daemon off;" ;而当一起连用的命令格式最好一致(此处选择的都是json格式)

然后进行构建v3版本:

[root@server myNginx]# docker build -t centos_nginx:v3 .

查看v3版本的镜像:

[root@server myNginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v3 1aeba273c0af seconds ago 504MB

使用v3版本的镜像启动一个容器:

[root@server myNginx]# docker run -d -p : centos_nginx:v3
2932d58ee8969587b04fa0155aadeb4b63a1934962d384624a8d7359725dfad3

然后查看容器状态:

[root@server myNginx]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2932d58ee896 centos_nginx:v3 "nginx -g 'daemon of…" minutes ago Up minutes 0.0.0.0:->/tcp boring_gauss

进行访问:

这里示例一个默认将nginx关闭的示例v3.1版:

[root@server myNginx]# cat Dockerfile
# 指定基础镜像
FROM centos # MAINTAINER
MAINTAINER @qq.com # 安装基础工具包
RUN yum -y install wget gcc gcc-c++ glibc make autoconf openssl openssl-devel libxml2 libxml2-dev libxslt-devel gd-devel GeoIP GeoIP-devel GeoIP-data # 下载nginx
ADD http://nginx.org/download/nginx-1.12.2.tar.gz /opt/nginx/ # 解压nginx 并创建用户
RUN tar -xvzf /opt/nginx/nginx-1.12..tar.gz -C /usr/local/src/ \
&& useradd -M -s /sbin/nologin nginx # 更改工作目录
WORKDIR /usr/local/src/nginx-1.12. # 编译安装nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install # 删除多余安装包
RUN rm -rf /opt/nginx/nginx-1.12..tar.gz # 设置环境变量
ENV PATH=/usr/local/nginx/sbin:$PATH # 设置端口
EXPOSE ENTRYPOINT ["nginx"] CMD ["-g", "daemon on;"]

CMD 的命令修改为了后台,我们知道如果容器内的进程在后台运行那么容器将不会运行,构建v3.1版本:

[root@server myNginx]# docker build -t centos_nginx:v3. .

查看v3.1版本的镜像:

[root@server myNginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v3. ec17ab98a424 seconds ago 504MB

使用v3.1版本的镜像启动一个容器,但是在启动的时候添加后面的command:

[root@server myNginx]# docker run -d -p : centos_nginx:v3. -g "daemon off;"
0143d4b91ca1f97be31f0427140dfb17bb4ad9530d4a4a19b70c93044f6332c5

可以看见在后面新增了 -g "daemon off;",前面提过如果在启动容器时增加了命令,那么Dockerfile中的CMD中的命令将不会生效

查看容器运行状态:

[root@server myNginx]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0143d4b91ca1 centos_nginx:v3. "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:->/tcp loving_burnell

可以看见容器的运行丝毫没有问题,于是nginx 的服务依然还是在前台运行,没有被影响,而新增的command (-g "daemon off;")将作为ENTRYPOINT的新的参数以此为准,于是进行访问:

添加VOLUME指令:

[root@server myNginx]# cat Dockerfile
# 指定基础镜像
FROM centos # MAINTAINER
MAINTAINER @qq.com # 安装基础工具包
RUN yum -y install wget gcc gcc-c++ glibc make autoconf openssl openssl-devel libxml2 libxml2-dev libxslt-devel gd-devel GeoIP GeoIP-devel GeoIP-data # 下载nginx
ADD http://nginx.org/download/nginx-1.12.2.tar.gz /opt/nginx/ # 解压nginx 并创建用户
RUN tar -xvzf /opt/nginx/nginx-1.12..tar.gz -C /usr/local/src/ \
&& useradd -M -s /sbin/nologin nginx # 挂载数据目录
VOLUME ["/usr/local/nginx/html"] # 更改工作目录
WORKDIR /usr/local/src/nginx-1.12. # 编译安装nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install # 删除多余安装包
RUN rm -rf /opt/nginx/nginx-1.12..tar.gz # 设置环境变量
ENV PATH=/usr/local/nginx/sbin:$PATH # 设置端口
EXPOSE ENTRYPOINT ["nginx"] CMD ["-g"]

然后进行构建v4版本:

[root@server myNginx]# docker build -t centos_nginx:v4 .

查看v4版本的镜像:

[root@server myNginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_nginx v4 b142047c1a6e seconds ago 504MB

使用v4版本的镜像启动一个容器:

[root@server myNginx]# docker run -d -p : --name nginx4 centos_nginx:v4 -g "daemon off;"
1d191f9bc49dc01ee2657508eba94ff1d02e5b4304eaf6ed5161e4b9000577ea

然后查看容器状态:

[root@server myNginx]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1d191f9bc49d centos_nginx:v4 "nginx -g 'daemon of…" seconds ago Up seconds 0.0.0.0:->/tcp nginx4

通过docker inspect 可以看到宿主机上面的挂载目录路径:

[root@server ~]# docker inspect nginx4
"Mounts": [
{
"Type": "volume",
"Name": "5c4b8ec0bf7e4f243ea643af4af559617c89c43933768a1b4b45caef237251bf",
"Source": "/var/lib/docker/volumes/5c4b8ec0bf7e4f243ea643af4af559617c89c43933768a1b4b45caef237251bf/_data",
"Destination": "/usr/local/nginx/html",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],

进入到宿主机的挂载目录并且查看目录内的文件:

[root@server ~]# cd /var/lib/docker/volumes/5c4b8ec0bf7e4f243ea643af4af559617c89c43933768a1b4b45caef237251bf/_data
[root@server _data]# pwd
/var/lib/docker/volumes/5c4b8ec0bf7e4f243ea643af4af559617c89c43933768a1b4b45caef237251bf/_data
[root@server _data]# ll
总用量
-rw-r--r-- 10月 50x.html
-rw-r--r-- 10月 index.html

利用docker exec 进入到容器中,查看卷:

[root@server myNginx]# docker exec -it nginx4 /bin/bash
[root@d2d2a2f287c6 nginx-1.12.]# cd /usr/local/nginx/html/
[root@d2d2a2f287c6 html]# pwd
/usr/local/nginx/html
[root@d2d2a2f287c6 html]# ll
total
-rw-r--r-- Oct 50x.html
-rw-r--r-- Oct index.html

现在在本地宿主机上的这个目录修改index.html文件内容:

[root@server _data]# echo "<h1>Hello Docker.</h1>" > index.html
[root@server _data]# cat index.html
<h1>Hello Docker.</h1>

然后切换到容器中查看这个文件是否发生改变:

[root@d2d2a2f287c6 html]# cat index.html
<h1>Hello Docker.</h1>

进行访问:

通过访问发现,在宿主机上面进行了更改,容器内部也发生了变化,这样就动态的实现网站数据动态更改。

添加ONBUILD 指令:

  Dockerfile1中base image 为A镜像,并在Dockefile1中定义ONBUILD指令,构建成新的镜像B镜像

  Dockerfile2中base image 为B镜像,构建成新镜像C

  当使用镜像B启动容器1不会执行OBNUILD中定义的内容,而使用C镜像启动的容器2则会执行ONBUILD定义的内容

[root@server myNginx]# cat Dockerfile
# 指定基础镜像
FROM centos # MAINTAINER
MAINTAINER @qq.com # 安装基础工具包
RUN yum -y install wget gcc gcc-c++ glibc make autoconf openssl openssl-devel libxml2 libxml2-dev libxslt-devel gd-devel GeoIP GeoIP-devel GeoIP-data # 下载nginx
ADD http://nginx.org/download/nginx-1.12.2.tar.gz /opt/nginx/ # 解压nginx 并创建用户
RUN tar -xvzf /opt/nginx/nginx-1.12..tar.gz -C /usr/local/src/ \
&& useradd -M -s /sbin/nologin nginx # 挂载数据目录
ONBUILD VOLUME ["/data"] # 更改工作目录
WORKDIR /usr/local/src/nginx-1.12. # 编译安装nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install # 删除多余安装包
RUN rm -rf /opt/nginx/nginx-1.12..tar.gz # 设置环境变量
ENV PATH=/usr/local/nginx/sbin:$PATH # 设置端口
EXPOSE ENTRYPOINT ["nginx"] CMD ["-g"]

然后进行构建v5版本:

[root@server myNginx]# docker build -t centos_nginx:v5 .

使用v5版本的镜像启动一个容器:

[root@server myNginx]# docker run -d -p : --name nginx5 centos_nginx:v5 -g "daemon off;"
1f3c1672cce45e6f0f4e8d927de017fbe0a16f30858427d5cb3c2ec7f7b55d98

现在进入到nginx5容器内查看是否存在/data:

[root@server myNginx]# docker exec -it nginx5 /bin/bash
[root@1f3c1672cce4 nginx-1.12.]# ll /data
ls: cannot access /data: No such file or directory

现在修改上面的Dockerfile的FROM基于的base image:

[root@server myNginx]# cat Dockerfile
# 指定基础镜像
FROM centos_nginx:v5 # MAINTAINER
MAINTAINER @qq.com

然后进行构建v6版本:

[root@server myNginx]# docker build -t centos_nginx:v6 .
Sending build context to Docker daemon .096kB
Step / : FROM centos_nginx:v5
# Executing build trigger
---> Running in a34359a1107d
Removing intermediate container a34359a1107d
---> b1e2a7e80907
Step / : MAINTAINER @qq.com
---> Running in 901fa3500f51
Removing intermediate container 901fa3500f51
---> a32bd0c300e2
Successfully built a32bd0c300e2
Successfully tagged centos_nginx:v6

使用v6版本的镜像启动一个容器:

[root@server myNginx]# docker run -d -p : --name nginx6 centos_nginx:v6 -g "daemon off;"
f8ccf7ff63f875742ac93b54cc25a629e7df14c8e676e202def1191baf0b3c1f

查看容器状态,并进入容器验证/data/目录:

[root@server myNginx]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f8ccf7ff63f8 centos_nginx:v6 "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:->/tcp nginx6
[root@server myNginx]# docker exec -it nginx6 /bin/bash
[root@f8ccf7ff63f8 nginx-1.12.]# ll /data
total

由此可见镜像v6包含了v5所有的内容,并且增加了ONBUILD的内容

Docke--Dockerfile实践的更多相关文章

  1. [转]docker之Dockerfile实践

    本文转自:https://www.cnblogs.com/jsonhc/p/7767669.html 上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践 先查看下本地的镜像,选一个作为 ...

  2. docker之Dockerfile实践

    上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践 先查看下本地的镜像,选一个作为base image: [root@docker ~]# docker images REPOSITO ...

  3. 【转】docker之Dockerfile实践

    转自:https://www.cnblogs.com/jsonhc/p/7767669.html 上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践 先查看下本地的镜像,选一个作为ba ...

  4. Dockerfile 实践及梳理

    Dockerfile 是一个文本文件,我们可以通过组合一条条的指令 (Instruction),来构建满足我们需求的 Docker 镜像 文档 Best practices for writing D ...

  5. Dockerfile极简入门与实践

    前文中,罗列了docker使用中用到的基本命令 此文,将会对怎样使用Dockerfile去创建一个镜像做简单的介绍 Dockerfile命令 要开始编写Dockerfile,首先要对相关的命令有个清晰 ...

  6. docker:Dockerfile构建LNMP平台

    docker:Dockerfile构建LNMP平台   1.dockerfile介绍  Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式.可以通过docker buil ...

  7. Docker 入门指南——Dockerfile 指令

    COPY 复制文件 格式: COPY [--chown=<user>:<group>] <源路径>... <目标路径> 源路径可以是多个,甚至可以使通配 ...

  8. 【04】循序渐进学 docker:Dockerfile

    写在前面的话 从前面我们简单的了解了镜像,也运行了容器,各种官方的镜像显然无法满足我们自己的需求,我们目的终究是运行自己的业务. 所以,本章节的 Dockerfile 就主要讲怎么在官方镜像的基础上制 ...

  9. Dockerfile制作镜像

    Dockerfile简介 dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像, 另外,使用Dockerfile去构建镜像好比使用pom去构建m ...

随机推荐

  1. IM多类型holder封装

    如标题,这是一个在列表多类型视图时的一个简化封装方法,减少多余代码,提高复用性,更好迭代扩展,先看视图列表效果图 GitHub:https://github.com/1024477951/Fragme ...

  2. 【English】七、常见动词

    一.动词: touch.hear.say.listen touch [tʌtʃ] 触摸 I touch the cat. They touch the elephant. hear  [hɪr] 听到 ...

  3. dede后台编辑器更改

    1.下载百度开发的UEditor编辑器(对应版本): 2. 解压下载的zip文件: 3.将解压后得到的文件夹拷贝到您网站目录下的include文件夹下并改名为ueditor: 4.将inc文件夹里边的 ...

  4. Scrapy 框架流程详解

    框架流程图 Scrapy 使用了 Twisted 异步非阻塞网络库来处理网络通讯,整体架构大致如下(绿线是数据流向): 简单叙述一下每层图的含义吧: Spiders(爬虫):它负责处理所有Respon ...

  5. Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块

    Python第十三天   django 1.6   导入模板   定义数据模型   访问数据库   GET和POST方法    SimpleCMDB项目   urllib模块   urllib2模块 ...

  6. MySql安装教程

    一.MYSQL的安装 1.打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认)”.“Comp ...

  7. pyspider+PhantomJS的代理设置

    环境:pyspider0.3.9 PhantomJS2.1.1,均为最新版 进程用supervisor托管的. 其中需要加的几个地方: webui进程: pyspider -c config.json ...

  8. Win7系统下,docker构建nginx+php7环境实践

    前面两章介绍的是Windows系统下如何安装和配置docker,主要原因在于,公司大多人数用的是Windows环境,想通过在Windows环境上,通过docker,构建一个公用的配置. 首先要说明的是 ...

  9. tmux resurrect 配置

    概述 tmux 用了很长时间了, 快捷键定制了不少, 唯一的遗憾是没法保存 session, 每次关机重开之后, 恢复不到之前的 tmux session. 虽然也能忍受, 但是每天都手动打开之前的 ...

  10. vue启动时候报错

    使用vue时,在已经安装模块完毕的情况下,依旧会报错,如: Module build failed: Error: %1 is not a valid Win32 application. 这个时候只 ...