docker笔记之构建nginx的Dockerfile
来源:互联网 发布:java long转date 编辑:程序博客网 时间:2024/06/04 19:26
docker笔记之构建nginx的Dockerfile
从源码构建nginx应用,可以参考官方Dockerfile。PS:这份Dockerfile使用了alpine作为基础镜像,非常有特点,但对于Jackie这样的小白来说区别不大。基于ubuntu的Dockerfile
FROM ubuntu:14.04MAINTAINER Jackie "www.jackieathome.net"ENV NGINX_VERSION 1.10.3ENV OPENSSL_VERSION 1.0.2kENV PCRE_VERSION 8.40ENV ZLIB_VERSION 1.2.11ENV BUILD_ROOT /usr/local/src/nginx# 这里为了加快构建速度,使用了163的安装源RUN cp /etc/apt/sources.list /etc/apt/sources.list.bak \ && sed -i "s/archive\.ubuntu\.com/mirrors\.163\.com/g" /etc/apt/sources.list \ && apt-get update \ && apt-get -y install zip unzip curl make gcc g++ \ && mkdir -p $BUILD_ROOT \ && cd $BUILD_ROOT \ && curl https://ftp.pcre.org/pub/pcre/pcre-$PCRE_VERSION.zip -o $BUILD_ROOT/pcre-$PCRE_VERSION.zip \ && curl https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz -o $BUILD_ROOT/openssl-$OPENSSL_VERSION.tar.gz \ && curl http://www.zlib.net/zlib-$ZLIB_VERSION.tar.gz -o $BUILD_ROOT/zlib-$ZLIB_VERSION.tar.gz \ && curl https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz -o $BUILD_ROOT/nginx-$NGINX_VERSION.tar.gz \ && tar vxzf nginx-$NGINX_VERSION.tar.gz \ && unzip pcre-$PCRE_VERSION.zip \ && tar vxfz zlib-$ZLIB_VERSION.tar.gz \ && tar vxfz openssl-$OPENSSL_VERSION.tar.gz \ && cd nginx-$NGINX_VERSION \ && BUILD_CONFIG="\ --prefix=/etc/nginx \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/run/nginx.lock \ --http-client-body-temp-path=/var/cache/nginx/client_temp \ --http-proxy-temp-path=/var/cache/nginx/proxy_temp \ --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \ --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \ --http-scgi-temp-path=/var/cache/nginx/scgi_temp \ --with-openssl=$BUILD_ROOT/openssl-$OPENSSL_VERSION \ --with-pcre=$BUILD_ROOT/pcre-$PCRE_VERSION \ --with-zlib=$BUILD_ROOT/zlib-$ZLIB_VERSION \ --with-http_ssl_module \ --with-http_v2_module \ --with-threads \ " \ && mkdir -p /var/cache/nginx \ && ./configure $BUILD_CONFIG \ && make && make install \ && rm -rf $BUILD_ROOT \ && apt-get -y remove zip unzip curl make gcc g++ \ && apt-get -y autoremove \ && rm -rf /var/lib/apt/lists/* \ && cp /etc/apt/sources.list.bak /etc/apt/sources.list \ && ln -sf /dev/stdout /var/log/nginx/access.log \ && ln -sf /dev/stderr /var/log/nginx/error.logEXPOSE 80 443CMD ["nginx", "-g", "daemon off;"]
基于centos的Dockerfile
FROM centosMAINTAINER Jackie "www.jackieathome.net"ENV NGINX_VERSION 1.10.3ENV OPENSSL_VERSION 1.0.2kENV PCRE_VERSION 8.40ENV ZLIB_VERSION 1.2.11ENV BUILD_ROOT /usr/local/src/nginx# 为了减小最终生成的镜像占用的空间,这里没有执行yum update命令,可能不是好的实践# 为了加快构建速度,这里使用了163的安装源#RUN yum -y update \RUN yum -y install curl \ && mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup \ && curl http://mirrors.163.com/.help/CentOS7-Base-163.repo -o /etc/yum.repos.d/CentOS7-Base-163.repo \ && yum clean all \ && yum makecache \ && yum -y install gcc gcc-c++ make perl zip unzip \ && mkdir -p $BUILD_ROOT \ && cd $BUILD_ROOT \ && curl https://ftp.pcre.org/pub/pcre/pcre-$PCRE_VERSION.zip -o $BUILD_ROOT/pcre-$PCRE_VERSION.zip \ && curl https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz -o $BUILD_ROOT/openssl-$OPENSSL_VERSION.tar.gz \ && curl http://www.zlib.net/zlib-$ZLIB_VERSION.tar.gz -o $BUILD_ROOT/zlib-$ZLIB_VERSION.tar.gz \ && curl https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz -o $BUILD_ROOT/nginx-$NGINX_VERSION.tar.gz \ && tar vxzf nginx-$NGINX_VERSION.tar.gz \ && unzip pcre-$PCRE_VERSION.zip \ && tar vxfz zlib-$ZLIB_VERSION.tar.gz \ && tar vxfz openssl-$OPENSSL_VERSION.tar.gz \ && cd nginx-$NGINX_VERSION \ && BUILD_CONFIG="\ --prefix=/etc/nginx \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/run/nginx.lock \ --http-client-body-temp-path=/var/cache/nginx/client_temp \ --http-proxy-temp-path=/var/cache/nginx/proxy_temp \ --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \ --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \ --http-scgi-temp-path=/var/cache/nginx/scgi_temp \ --with-openssl=$BUILD_ROOT/openssl-$OPENSSL_VERSION \ --with-pcre=$BUILD_ROOT/pcre-$PCRE_VERSION \ --with-zlib=$BUILD_ROOT/zlib-$ZLIB_VERSION \ --with-http_ssl_module \ --with-http_v2_module \ --with-threads \ " \ && mkdir -p /var/cache/nginx \ && ./configure $BUILD_CONFIG \ && make && make install \ && rm -rf $BUILD_ROOT \ && yum -y remove gcc gcc-c++ make perl zip unzip \ && yum clean allEXPOSE 80 443CMD ["nginx", "-g", "daemon off;"]
笔记
.dockerignore
作用与git
的.gitignore
文件类似。在Dockerfile
的同级目录下增加.dockerignore
,将不需要传递给docker
的文件名配置进去,可以有效减少传递给docker
命令的数据,提高构建效率。文章Do not ignore .dockerignore对.dockerignore
的作用和使用方法有比较全面的介绍。apt-get
apt-get
运行时将在路径/var/lib/apt/lists/
缓存数据,因此构建动作完成后,需要手工清理这个路径。执行apt-get remove
清理软件之后,可能存在一些无用的软件,因此不要忘记执行apt-get autoremove
。yum
yum -y
在运行时不需要用户确认,所有行为默认用户同意,比较适合在非交互模式比如在Dockerfile
这种场景下使用。yum
命令在运行时会在路径/var/cache/yum
产生缓存数据,执行yum clean all
可以清理这些缓存,释放空间,减少最终镜像占用的空间。yum update
会更新系统,如果基础镜像版本旧的话,可能会下载、安装大量的软件,导致最终的镜像占用的空间比较大。常用的命令
# 删除已停止的容器sudo docker ps -q -a | xargs sudo docker rm# 删除无效的镜像sudo docker rmi $(sudo docker images | grep "^" | awk '{print $3}')
参考资料
- docker-nginx/stable/jessie/Dockerfile
- docker-nginx/stable/alpine/Dockerfile
- nginx Dockerfile doc
- How To Run Nginx in a Docker Container on Ubuntu 14.04
- Docker Explained: How To Containerize and Use Nginx as a Proxy
- Do not ignore .dockerignore
- docker常用管理命令(下)
- How to remove unused Docker containers and images
- Docker 使用经验总结
- 玩转Docker镜像
- Docker 2 -- 关于Dockerfile
- Docker 4 -- 总结
- Docker Explained: Using Dockerfiles to Automate Building of Images
- Dockerfile指令详解
- 手把手教你写Dockerfile, 附赠MongoDB和Nginx Dockerfile编写实例
- Docker run 命令的使用方法
- Docker — 从入门到实践
- 转 centos利用yum安装卸载软件常用命令
- Docker系列之(三):Docker微容器Alpine Linux
- DockerFile创建一个nginx容器的全过程
- Docker容器的Nginx实践
- dockerfile实例--安装nginx
查看原文:http://www.jackieathome.net/archives/483.html
0 0
- docker笔记之构建nginx的Dockerfile
- docker笔记之构建nginx的Dockerfile
- Docker学习笔记之Dockerfile
- Dockerfile构建Nginx实例
- docker学习笔记4.1-使用Dockerfile文件构建镜像
- docker学习笔记(六)使用Dockerfile构建镜像
- Docker学习笔记-- 如何使用Dockerfile构建镜像
- 用 Dockerfile 构建 docker image
- Docker-Dockerfile构建镜像
- 用Dockerfile构建docker image
- docker dockerfile构建tomcat应用
- docker 镜像构建Dockerfile
- Docker镜像构建-Dockerfile
- Docker学习笔记:Dockerfile
- Docker学习笔记:Dockerfile
- Docker学习笔记:Dockerfile
- Docker学习笔记:Dockerfile
- docker筑基篇-04-使用Dockerfile构建自己的镜像
- evpp性能测试(3): 对无锁队列boost::lockfree::queue和moodycamel::ConcurrentQueue做一个性能对比测试
- maven(17)-自动发布到远程linux服务器
- 最长回文子串和回文子序列
- canvas线性渐变
- 【Eigen】Eigen介绍及简单使用
- docker笔记之构建nginx的Dockerfile
- python︱gensim训练word2vec及相关函数与功能理解
- 使用ReentrantReadWriteLock类
- Android中Drawable与Bitmap相互转换的方法
- 清除微信浏览器缓存
- ARM汇编指令特点
- Java动态录入弹球
- java数据类型转换(强制转换)
- Python与机器学习3