Docker alpine构建nginx环境的教程

Docker alpine构建nginx

1,pull一个基础镜像

至于如何pull自己的镜像和构建镜像可以参考Docker Hub简单使用也可以pull本章中的docker hub的镜像

[root@gitlab conf]# docker pull marksugar/alpine
Using default tag: latest
latest: Pulling from marksugar/alpine

e110a4a17941: Already exists
92c6475c18dd: Pull complete
Digest: sha256:5ae1b32053247f3d251fe5ee56aa817d330cb007603272985a0aab0b79a4c9b3
Status: Downloaded newer image for marksugar/alpine:latest

2,Dockerfile

FROM marksugar/alpine
MAINTAINER wwww.111cn.net
RUN addgroup -g 499 -S nginx \
&& adduser -HDu 499 -s /sbin/nologin -g 'web server' -G nginx nginx \
&& cd /usr/local \
&& curl -sO http://nginx.org/download/nginx-1.10.1.tar.gz \
&& tar xf nginx-1.10.1.tar.gz \
&& rm -rf nginx-1.10.1.tar.gz \
&& cd nginx-1.10.1 \
&& apk --update --no-cache add geoip geoip-dev pcre libxslt gd openssl-dev pcre-dev zlib-dev build-base linux-headers libxslt-dev gd-dev openssl-dev libstdc++ libgcc patch logrotate supervisor inotify-tools && rm -rf /var/cache/apk/*
RUN RUN ./configure \
    --prefix=/usr/local/nginx \
    --conf-path=/etc/nginx/nginx.conf \
    --user=nginx \
    --group=nginx \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --pid-path=/var/run/nginx/nginx.pid \
    --lock-path=/var/lock/nginx.lock \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --with-http_flv_module \
    --with-http_mp4_module \
    --http-client-body-temp-path=/var/tmp/nginx/client \
    --http-proxy-temp-path=/var/tmp/nginx/proxy \
    --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \
    --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
    && make && make install \
    && mkdir -p /var/tmp/nginx/{client,fastcgi,proxy,uwsgi} \
    && echo "daemon off;" >> /etc/nginx/ngnix.conf \
    && apk del wget
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
CMD ["/usr/local/nginx/sbin/nginx"]

3,build

docker build -t marksugar/nginx Dockerfile

4,run起来

[root@gitlab apline-nginx]# docker run --name mynginx -d -p 81:80 marksugar/nginx
e2b7783eacde80337801a1e1c5d0962abd0b2770e820b9523501682716b6b817
[root@gitlab apline-nginx]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                NAMES
e2b7783eacde        marksugar/nginx        "/usr/local/nginx/sbi"   2 seconds ago       Up 1 seconds        0.0.0.0:81->80/tcp   mynginx
b889bfd7a6ee        marksugar/nginx:8.33   "/bin/bash"              19 hours ago        Up 4 hours          0.0.0.0:80->80/tcp   nginx
[root@gitlab apline-nginx]#

这时你会看到一个欢迎页面

nginx.png

1,Dockerfile

Docker挂载数据卷,可参考Docker网络和数据卷

挂载nginx配置文件和根目录

FROM marksugar/alpine
MAINTAINER wwww.111cn.net
RUN addgroup -g 499 -S nginx \
&& adduser -HDu 499 -s /sbin/nologin -g 'web server' -G nginx nginx \
&& cd /usr/local \
&& curl -sO http://nginx.org/download/nginx-1.10.1.tar.gz \
&& tar xf nginx-1.10.1.tar.gz \
&& rm -rf nginx-1.10.1.tar.gz \
&& apk --update --no-cache add geoip geoip-dev pcre libxslt gd openssl-dev \
pcre-dev zlib-dev build-base linux-headers libxslt-dev gd-dev openssl-dev \
libstdc++ libgcc patch logrotate supervisor inotify-tools
WORKDIR /usr/local/nginx-1.10.1
RUN ./configure \
--prefix=/usr/local/nginx \
--conf-path=/etc/nginx/nginx.conf \
--user=nginx \
--group=nginx \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_flv_module \
--with-http_mp4_module \
--http-client-body-temp-path=/var/tmp/nginx/client \
--http-proxy-temp-path=/var/tmp/nginx/proxy \
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
&& make && make install \
&&  mkdir -p /var/tmp/nginx/{client,fastcgi,proxy,uwsgi} \
&& echo "daemon off;" >> /etc/nginx/nginx.conf \
&& apk del wget \
&& rm -rf /usr/local/nginx-1.10.1 \
&& rm -rf /var/cache/apk/* \
&& rm -rf /etc/nginx
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
CMD ["/usr/local/nginx/sbin/nginx"]

2,挂载配置文件

run起来并且挂载nginx配置文件以及配置文件中定义的目录也被挂载
-v /data/nginx/conf:/etc/nginx/
-v /data/nginx/wwwlog:/data/nginx/wwwlog/
-v /data/nginx/wwwroot:/data/nginx/wwwroot/

这三个路径分别是将本地的conf文件映射到容器中nginx配置文件

[root@gitlab data]# tree /data/
/data/
└── nginx

    ├── conf
    │   ├── conf.d
    │   ├── default.d
    │   ├── fastcgi.conf
    │   ├── fastcgi_params
    │   ├── koi-utf
    │   ├── koi-win
    │   ├── mime.types
    │   ├── nginx.conf
    │   ├── nginx.tar.gz
    │   ├── scgi_params
    │   ├── uwsgi_params
    │   ├── vhost
    │   │   └── www.conf
    │   └── win-utf
    ├── wwwlog
    │   ├── error_nginx.log
    │   └── www.com.log
    └── wwwroot
        └── index.html

7 directories, 14 files

[root@gitlab data]#
[root@gitlab apline-nginx]# docker run --name mynginx -d -p 81:80 -v /data/nginx/conf:/etc/nginx/ -v /data/nginx/wwwlog:/data/nginx/wwwlog/ -v /data/nginx/wwwroot:/data/nginx/wwwroot marksugar/nginx
240c993352560f76a90d493d3f00253472c3e55858e02b345ad9c66fb40c4001
[root@gitlab apline-nginx]# docker ps -a
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                NAMES
240c99335256        marksugar/nginx        "/usr/local/nginx/sbi"   23 minutes ago      Up 23 minutes       0.0.0.0:81->80/tcp   mynginx

3,nginx配置文件

nginx主配置文件基本一致,如下:

[root@gitlab conf]# cat nginx.conf

user  nginx nginx;
error_log /data/nginx/wwwlog/error_nginx.log crit;
pid /var/run/nginx.pid;
worker_rlimit_nofile 51200;

events {
    use epoll;
    worker_connections 51200;
}

http {

    include mime.types;
    default_type application/octet-stream;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 50m;
    sendfile on;
    tcp_nopush on;
    keepalive_timeout 120;
    server_tokens off;
    tcp_nodelay on;
   
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
   
    gzip on;
    gzip_buffers 16 8k;
    gzip_comp_level 6;
    gzip_http_version 1.1;
    gzip_min_length 256;
    gzip_proxied any;
    gzip_vary on;
    gzip_types
    text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
    text/javascript application/javascript application/x-javascript
    text/x-json application/json application/x-web-app-manifest+json
    text/css text/plain text/x-component
    font/opentype application/x-font-ttf application/vnd.ms-fontobject
    image/x-icon;
    gzip_disable  "msie6";

    open_file_cache max=1000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;
   
        log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" $http_x_forwarded_for';
   
    log_format upstream2 '$proxy_add_x_forwarded_for $remote_user [$time_local] "$request" $http_host'
        '$body_bytes_sent "$http_referer" "$http_user_agent" $ssl_protocol $ssl_cipher'
        '$request_time [$status] [$upstream_status] [$upstream_response_time] "$upstream_addr"';
###########################################################################################
include vhost/*.conf;
}
daemon off;
[root@gitlab conf]#
include vhost/www.conf

[root@gitlab vhost]# cat www.conf
server {

        listen          80;
        server_name localhost;
        location / {
            root  /data/nginx/wwwroot;
            index index.php index.html index.htm;
        }
#        location ~ .*\. (php|php5.3.27)?$ {
#                root html/blog;
#                fastcgi_pass 127.0.0.1:9000;
#                fastcgi_index index.php;
#                include fastcgi.conf;
#        }
        access_log  /data/nginx/wwwlog/www.com.log;
}
[root@gitlab vhost]#
index.html

[root@gitlab wwwroot]# cat /data/nginx/wwwroot/index.html
<h1>Centos7 To Apline</h1>
[root@gitlab wwwroot]#

时间: 2024-10-25 01:18:36

Docker alpine构建nginx环境的教程的相关文章

Docker之构建Nginx镜像实现迅速搭建Google反代站点

镜像用法 自备证书用法 docker run -d --name=google \ -p 80:80 -p 443:443 \ -v 系统上存放ssl证书的目录:/usr/local/nginx/conf/ssl \ -e PROXY_GOOGLE=On \ -e PROXY_SSL_CRT_KEY=On \ -e PROXY_CRT=你的crt名称 \ -e PROXY_KEY=你的key名称 \ -e PROXY_DOMAIN=你的域名 \ benyoo/nginx_build:proxy_

CentOS 下载快速安装nginx环境的教程

Ubuntu下安装nginx,直接apt-get install nginx就行了,很方便. 但是今天装了CentOS6.2,直接yum install nginx不行,要先处理下源,下面是安装完整流程,也十分简单: 1.CentOS 6,先执行: rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm 2,查看yum的nginx信息 []# yum i

linux中Apache更Nginx环境配置教程

想把Apache2.2换Nginx已经有些日子,今天给动手了.找了个稳定版本:1.4.1  http://nginx.org/download/nginx-1.4.1.zip 配置很简单,就是nginx跟php-cgi的进程管理有点子麻烦. 但是,只要会点bat,也是很简单的事情.贴一下自己的两个管理nginx.php-cgi的bat文件. 1. start_nginx_php-cgi.bat    代码如下 复制代码     @echo off     echo Starting PHP Fa

搭建基于Docker的PHP开发环境的详细教程

  这篇文章主要介绍了搭建基于Docker的PHP开发环境的详细教程,Docker是当下虚拟机技术的最佳选择,需要的朋友可以参考下 现在很多开发者都使用Vagrant来管理他们的虚拟机开发环境,Vagrant确实很酷, 不过也有不少缺点(最主要的是它占用太多的资源).在容器技术.Docker和更多类Docker技术出现后,解决这个问题就变得简单了. 免责声明 由于boot2docker的工作方式,本文所述的方法在你的环境中可能无法正常运行.如果需要在非Linux环境下共享文件夹到Docker容器

Docker配置PHP开发环境教程_php基础

前言 笔者用的是mac开发,但是mac自带的php功能安装十分不方便,并且和线上的linux开发环境不一致.在没有用docker之前一直用vagrant配置的centos的php开发环境,但是自从有了docker之后,就不再用vagrant了. 配置自己的php镜像 首先在自己的任意一个目录下创建如下三个文件 run.sh #!/bin/bash /usr/sbin/php-fpm7.0 /usr/sbin/nginx tailf /etc/apt/sources.list sources.li

在 OSX 下使用 docker 构建 hexo 环境

2015-05-31 08:55        摘要: 截止目前为止,在docker hub上还看不到hexo 3+版本的镜像构建. 由于Node环境的安装时间比较长,对于电脑比较多的人相对来说还是比较麻烦的. 基于DockerFile构建自己的HEXO环境非常灵活,可以根据自己的情况进行定制. 可以导入导出复制环境部署到其他电脑中. 实践开始 docker安装 大部分Linux,比如说Ubuntu,Debian都可以通过如下命令安装: curl -sSL https://get.daoclou

Nginx安装配置PHP(FastCGI)环境的教程

这篇是Nginx安装配置PHP(FastCGI)环境的教程.Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用. 一.什么是 FastCGI FastCGI是一个可伸缩地.高速地在HTTP server和动态脚本语言间通信的接口.多数流行的HTTP server都支持FastCGI,包括Apache.Nginx和lighttpd等,同时,FastCGI也被许多脚本语言所支持,其中就有PHP. FastCGI是从CGI发展改进而来的.传统CG

docker 的java编译环境构建详细介绍_docker

用Dockerfile 构建一个java的编译环境,这里整理下实现步骤: 1.包括以下软件包 ubuntu jdk maven svn 2.jdk.maven 需要手动下载,下载之后分别为 jdk-8u51-linux-x64.gz apache-maven-3.3.3-bin.tar.gz 3.创建一个Dockerfile文件,包含以下内容 FROM ubuntu RUN apt-get update RUN apt-get -y install subversion ADD jdk-8u51

Docker容器配置Nginx实例分享_docker

作为目前最火的应用,Docker 确实存在着其独到之处,无论是程序猿还是运维都应该听说过 Docker 的大名,Docker 已经走过了许多的坑,目前最新版本是 v1.11.0 版本,应该说是完全能承载开发使用和运维监控,这款工具能帮助我们高效的打包.发布和运行承载着应用程序的容器系统.而且收集日志.帮助 App 的快速开发都有很大作用. 容器和虚拟机,经常是被拿出来对比的两款产品,实际上两者有着根本的差别,虚拟机是完全模拟了一台真实计算机,在上面运行的系统可能或者不可能知道自己运行在虚拟化环境