docker 自制alpine-lnp镜像

简单粗暴点吧

jenkins 镜像下载:docker pull jenkins:alpine

dockfile 原地址:https://gist.github.com/phith0n/373cc078a8b25a20432408d5d7556770

php5.dockerfile

FROM alpine:3.3
MAINTAINER Didiet Noor <dnoor@kulina.id> (@lynxluna)


# Patch APK Mirror to YKode
RUN echo "http://dl-4.alpinelinux.org/alpine/v3.3/main" > /etc/apk/repositories

ENV TIMEZONE Asia/Shanghai
ENV PHP_MEMORY_LIMIT 512M
ENV MAX_UPLOAD 50M
ENV PHP_MAX_FILE_UPLOAD 200
ENV PHP_MAX_POST 100M

RUN apk update && 
  apk add tzdata && 
  cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && 
  echo "${TIMEZONE}" > /etc/timezone && 
  apk add php-intl 
    php-mcrypt 
    php-openssl 
    php-gmp 
    php-json 
    php-dom 
    php-pdo 
    php-zip 
    php-zlib 
    php-mysqli 
    php-bcmath 
    php-gd 
    php-xcache 
    php-pdo_mysql 
    php-gettext 
    php-xmlreader 
    php-xmlrpc 
    php-bz2 
    php-memcache 
    php-iconv 
    php-curl 
    php-ctype 
    php-fpm 
    php-phar 
    php && 
  curl -sS https://getcomposer.org/installer | 
    php -- --install-dir=/usr/bin --filename=composer && 
  sed -i -e "s/;daemonizes*=s*yes/daemonize = no/g" /etc/php/php-fpm.conf && 
  sed -i -e "s/listens*=s*127.0.0.1:9000/listen = 9000/g" /etc/php/php-fpm.conf && 
  sed -i "s|;date.timezone =.*|date.timezone = ${TIMEZONE}|" /etc/php/php.ini && 
  sed -i "s|memory_limit =.*|memory_limit = ${PHP_MEMORY_LIMIT}|" /etc/php/php.ini && 
    sed -i "s|upload_max_filesize =.*|upload_max_filesize = ${MAX_UPLOAD}|" /etc/php/php.ini && 
    sed -i "s|max_file_uploads =.*|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|" /etc/php/php.ini && 
    sed -i "s|post_max_size =.*|max_file_uploads = ${PHP_MAX_POST}|" /etc/php/php.ini && 
    sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/php.ini && 
  mkdir /www && 
  apk del tzdata && 
  rm -rf /var/cache/apk/*
php7.dockerfile

FROM alpine:edge
MAINTAINER phithon <root@leavesongs.com>

ENV TIMEZONE Asia/Shanghai
ENV PHP_MEMORY_LIMIT 512M
ENV MAX_UPLOAD 50M
ENV PHP_MAX_FILE_UPLOAD 200
ENV PHP_MAX_POST 100M

RUN apk update && 
  apk add tzdata curl && 
  cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && 
  echo "${TIMEZONE}" > /etc/timezone && 
  apk --update --repository=http://dl-4.alpinelinux.org/alpine/edge/testing add 
    php7 
    php7-common 
    php7-intl 
    php7-gd 
    php7-mcrypt 
    php7-openssl 
    php7-gmp 
    php7-json 
    php7-dom 
    php7-pdo 
    php7-zip 
    php7-zlib 
    php7-mysqli 
    php7-bcmath 
    php7-pdo_mysql 
    php7-gettext 
    php7-xmlreader 
    php7-xmlrpc 
    php7-bz2 
    php7-iconv 
    php7-curl 
    php7-ctype 
    php7-fpm 
    php7-mbstring 
    php7-session 
    php7-phar && 
    curl -sS https://getcomposer.org/installer | 
    php7 -- --install-dir=/usr/bin --filename=composer && 
    sed -i -e "s/;daemonizes*=s*yes/daemonize = no/g" /etc/php7/php-fpm.conf && 
    sed -i -e "s/listens*=s*127.0.0.1:9000/listen = 9000/g" /etc/php7/php-fpm.d/www.conf && 
    sed -i "s|;date.timezone =.*|date.timezone = ${TIMEZONE}|" /etc/php7/php.ini && 
    sed -i "s|memory_limit =.*|memory_limit = ${PHP_MEMORY_LIMIT}|" /etc/php7/php.ini && 
    sed -i "s|upload_max_filesize =.*|upload_max_filesize = ${MAX_UPLOAD}|" /etc/php7/php.ini && 
    sed -i "s|max_file_uploads =.*|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|" /etc/php7/php.ini && 
    sed -i "s|post_max_size =.*|max_file_uploads = ${PHP_MAX_POST}|" /etc/php7/php.ini && 
    sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php7/php.ini && 
  ln -s /usr/bin/php7 /usr/bin/php && 
  mkdir /www && 
  apk del tzdata curl && 
  rm -rf /var/cache/apk/*

这里选择php5的版本

docker build -t alpine:v1 .

nginx-dockerfile:

FROM alpine:v1
ENV TIME_ZONE Asiz/Shanghai
RUN mkdir /opt/www -p
RUN mkdir /var/log/www -p
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories &&  apk update &&  apk -u add nginx &&
    apk -u add supervisor
ADD nginx.conf /etc/nginx/
ADD default.conf /etc/nginx/conf.d/
ADD supervisord.conf /etc/supervisord.conf
CMD ["supervisord", "-c", "/etc/supervisord.conf"]
nginx.conf


#user  nobody;
worker_processes  auto;

error_log  /var/log/nginx/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  65535;
    use epoll;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay     on;
    server_tokens   off;

    keepalive_timeout  120;

    gzip  on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types  text/plain text/css application/json application/javascript application/x-javascript text/javascript text/xml application/rss+xml application/atom+xml application/rdf+xml image/svg+xml;
    gzip_vary on;

    client_header_buffer_size 16k;
    large_client_header_buffers 16 32k;
    open_file_cache max=65535 inactive=60s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 1;

    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;

    client_max_body_size 50m;
    client_body_buffer_size 256k;
    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;

    include conf.d/*.conf;
}
cat default.conf 

server {
    listen 80;
    server_name www.default.com;
    charset utf-8;
    root  /opt/www;
    error_log   /var/log/www/www.default.com.log.err;
#    access_log   /var/log/www/www.default.com.log main;
    index index.html index.php;

    large_client_header_buffers 4 16k;
    client_max_body_size 300m;
    client_body_buffer_size 128k;
    proxy_connect_timeout 300;
    proxy_read_timeout 300;
    proxy_send_timeout 300;
    proxy_buffer_size 64k;
    proxy_buffers   4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;
    gzip  on;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
  }




    location ~ .php {
    #    try_files $uri =404;
       fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        set $real_script_name $fastcgi_script_name;
        if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
                set $real_script_name $1;
                set $path_info $2;
        }
        fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
        fastcgi_param SCRIPT_NAME $real_script_name;
        fastcgi_param PATH_INFO $path_info;
        include        fastcgi_params;

    }
}
cat /etc/supervisord.conf 

[supervisord]  
nodaemon=true  
  
[program:php]  
command=php-fpm
stdout_events_enabled=true
stderr_events_enabled=true
  
[program:nginx]
startsecs=50
command=nginx -g "daemon off;"

[program:crond]
command=crond -f
autostart=true
autorestart=true
redirect_stderr=true
docker run -itd -p 0.0.0.0:80:80 d4012c88f6d0
dcoker exec -it 31118398060a sh
原文地址:https://www.cnblogs.com/Tempted/p/7806114.html