Dockerfile实例,构建openresty+lua+filebeat镜像 - Go语言中文社区

Dockerfile实例,构建openresty+lua+filebeat镜像


Dockerfile入门

Dockerfile由一条条命令语句构建,以#开头的语句行为注释,其基本结构可分为四个部分。

1. 基础镜像:由FROM语句组成,eg: `FROM centos`

2. 维护者信息:由MAINTAINER语句组成, eg: `MAINTAINER peter_xizi 591838169@qq.com`

3. 镜像操作指令:由一系列指令组成,下面列出最基本的指令

     `RUN <COMMAND>`    shell中执行 or `RUN [ COMMAND,  PARAM1, PARAM2, PARAM3,xx]`  其他类型的终端中执行     执行某些命令或运行某些程序

     ·EXPOSE <PORT1> [<PORT2>,<PORT3> ...] ·    暴露容器端口

    · ENV <KEY> <VALUE>  ·    设置容器的环境变量

    · ADD  <SRC>  <DEST> ·  将文件拷贝到容器,如果文件源是一个tar文件将拷贝到容器内自动解压为目录

     ·COPY <SRC> <DEST>·  将文件拷贝到容器

     ·ENTRYPOINT  COMMAND PARAM1 PARAM2...·  shell中执行或`ENTERPOINT [COMMAND PARAM1 PARAM2... ]`   其他类型的终端中执行,  设置容器启动后的执行命令

4. 容器启动时的执行命令

     `CMD   <COMMAND>` shell中执行命令 或 `CMD [ COMMAND ] ` 其他类型的终端中执行命令 

Note:

     大家可能会困惑有三种方法执行命令,RUN,ENTERPOINT和CMD指令。

     RUN命令是在构建镜像的过程中执行的,在容器创建之前完成的。

     CMD命令是利用镜像创建容器之后启动容器时的命令,但是, 如果利用镜像创建容器时指定了命令,会覆盖Dockerfile中指定的CMD命令。

     ENTERPOINT命令也是利用镜像创建容器之后启动容器时的命令,不同之处在于,如果利用镜像创建容器时指定了命令,该命令将会作为ENTERPOINT命令的参数

利用Dockerfile构建镜像:进入Dockerfile所在的目录,运行   ·docker build -t=<tagName> .·命令,  其中最后的点号表示Dockerfile所在的目录


利用Dockerfile建构Openresty镜像

  要求: Openresty需要使用lua脚本进行认证,同时设置nginx的日志格式,并借助filebeat将nginx日志传递给logstash(也可以是ElasticSearch)

  整个Dockerfile的结构应该是

  FROM   <base image>

  MAINTAINER  xxx    xxx.mail

  <commands to install/config nginx, including lua configuration>

  <commands to install filebeat>

  RUN  xxxx 


为了简便起见,我们可以先将需要的安装文件和配置文件编辑好,使用RUN COPY xxx命令来拷贝替换原有的文件来实现配置



 

Dockerfile文件

# This dockerfile uses the centos image
# VERSION 1.0
FROM centos
# Maintainer: xizi <591838169@qq.com> (@shuangxi)
MAINTAINER xizi 591838169@qq.com
# Commands install openresty and its dependency
RUN mkdir -p /openresty/logs 
COPY /tools/ /openresty/
# Commands to install openresty and its dependency
RUN yum install -y perl readline-devel pcre-devel openssl-devel gcc make
RUN cd /openresty && tar -zxvf openresty-1.9.7.3.tar.gz && cd openresty-1.9.7.3 && ./configure && make && make install
RUN cd /usr/local/bin && ln -s /usr/local/openresty/nginx/sbin/nginx nginx
RUN cp -f /openresty/nginx.conf /usr/local/openresty/nginx/conf/ && cp /openresty/auth.lua /usr/local/openresty/nginx/conf/
RUN cp -f /openresty/http_headers.lua /usr/local/openresty/lualib/resty/ && cp /openresty/http.lua /usr/local/openresty/lualib/resty/
# Commands for filebit
RUN rpm -vi /openresty/filebeat-1.2.2-x86_64.rpm
RUN cp -f /openresty/filebeat.yml /etc/filebeat/
# Commands when creating a new container:starting filebeat and openresty
RUN cd /openresty && chmod +x startNginx.sh
CMD /openresty/startNginx.sh

startNginx.sh

#!/bin/sh
#commands to generate nginx config file
......
#commands to start filebeat and nginx
filebeat -e -c /etc/filebeat/filebeat.yml &
nginx &
sh

本文链接: http://blog.csdn.net/musa875643dn/article/details/51635756

欢迎转载,转载请指明出处。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/musa875643dn/article/details/51635756
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-25 01:28:00
  • 阅读 ( 1582 )
  • 分类:docker

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢