详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

栏目: 服务器 · Nginx · 发布时间: 6年前

内容简介:Tips:一般在生产环境都是负载均衡,定时任务是单独在一个容器执行,故此是注释掉的,需要单独在定时任务容器中打开即可。

一、配置目录结构

详解构建 <a href='https://www.codercto.com/topics/18749.html'>PHP</a> 开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

1.1 crontabs

# do daily/weekly/monthly maintenance
# min   hour    day     month   weekday command
# *         *         *         *         *         /usr/bin/php /usr/share/nginx/html/artisan schedule:run >> /dev/null 2>&1

Tips:一般在生产环境都是负载均衡,定时任务是单独在一个容器执行,故此是注释掉的,需要单独在定时任务容器中打开即可。

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

2.1 nginx与php配置文件

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

Tips:由于php配置文件是监听的sock,默认情况下监听端口 9000。PHP-FPM使用Unix套接字,这避免了TCP的开销。

3.1 php

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

二、Dockerfile详解

#1.Base Image
FROM alpine

# ensure www-data user exists
#RUN set -x \
#    && addgroup -g 82  -S www-data \
#    && adduser -u 82 -D -S -G www-data www-data

# Environments
ENV TIMEZONE            Asia/Shanghai
ENV PHP_MEMORY_LIMIT    512M
ENV MAX_UPLOAD          50M
ENV PHP_MAX_FILE_UPLOAD 200
ENV PHP_MAX_POST        100M
ENV COMPOSER_ALLOW_SUPERUSER 1

#2.ADD-PHP-FPM

# Mirror mirror switch to Alpine Linux - http://dl-4.alpinelinux.org/alpine/
RUN apk update \
    && apk upgrade \
    && apk add \
        curl \
        tzdata \
        php7-fpm\
        php7 \
        php7-dev \
        php7-apcu \
        php7-bcmath \
        php7-xmlwriter \
        php7-ctype \
        php7-curl \
        php7-exif \
        php7-iconv \
        php7-intl \
        php7-json \
        php7-mbstring\
        php7-opcache \
        php7-openssl \
        php7-pcntl \
        php7-pdo \
        php7-mysqlnd \
        php7-mysqli \
        php7-pdo_mysql \
        php7-pdo_pgsql \
        php7-phar \
        php7-posix \
        php7-session \
        php7-xml \
        php7-simplexml \
        php7-mcrypt \
        php7-xsl \
        php7-zip \
        php7-zlib \
        php7-dom \
        php7-redis\
        php7-tokenizer \
        php7-gd \
        php7-mongodb\
        php7-fileinfo \
        php7-zmq \
        php7-memcached \
        php7-xmlreader \
     && cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
    && echo "${TIMEZONE}" > /etc/timezone \
    && apk del tzdata \
     && rm -rf /var/cache/apk/*

# https://github.com/docker-library/php/issues/240
# https://gist.github.com/guillemcanal/be3db96d3caa315b4e2b8259cab7d07e
# https://forum.alpinelinux.org/forum/installation/php-iconv-issue

RUN mkdir -p /usr/local/var/log/php7/
RUN mkdir -p /usr/local/var/run/
COPY ./php/php-fpm.conf /etc/php7/
COPY ./php/www.conf /etc/php7/php-fpm.d/

RUN apk add --no-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing gnu-libiconv
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php
RUN rm -rf /var/cache/apk/*


# Set environments
RUN sed -i "s|;*date.timezone =.*|date.timezone = ${TIMEZONE}|i" /etc/php7/php.ini && \
    sed -i "s|;*memory_limit =.*|memory_limit = ${PHP_MEMORY_LIMIT}|i" /etc/php7/php.ini && \
    sed -i "s|;*upload_max_filesize =.*|upload_max_filesize = ${MAX_UPLOAD}|i" /etc/php7/php.ini && \
    sed -i "s|;*max_file_uploads =.*|max_file_uploads = ${PHP_MAX_FILE_UPLOAD}|i" /etc/php7/php.ini && \
    sed -i "s|;*post_max_size =.*|post_max_size = ${PHP_MAX_POST}|i" /etc/php7/php.ini && \
    sed -i "s|;*cgi.fix_pathinfo=.*|cgi.fix_pathinfo= 0|i" /etc/php7/php.ini

#3.Install-Composer
RUN curl -sS https://getcomposer.org/installer | \
    php -- --install-dir=/usr/bin/ --filename=composer



#4.ADD-NGINX
RUN apk add nginx
COPY ./nginx/conf.d/default.conf /etc/nginx/conf.d/
COPY ./nginx/nginx.conf /etc/nginx/
COPY ./nginx/cert/ /etc/nginx/cert/

RUN mkdir -p /usr/share/nginx/html/public/
COPY ./php/index.php /usr/share/nginx/html/public/
#RUN mkdir -p /run/nginx
#RUN touch /run/nginx/nginx.pid
# Expose volumes

VOLUME ["/usr/share/nginx/html", "/usr/local/var/log/php7", "/var/run/"]
WORKDIR /usr/share/nginx/html


#5.ADD-SUPERVISOR
RUN apk add supervisor \
 && rm -rf /var/cache/apk/*

# Define mountable directories.
VOLUME ["/etc/supervisor/conf.d", "/var/log/supervisor/"]
COPY ./supervisor/conf.d/ /etc/supervisor/conf.d/

#6.ADD-CRONTABS
COPY ./crontabs/default /var/spool/cron/crontabs/
RUN cat /var/spool/cron/crontabs/default >> /var/spool/cron/crontabs/root
RUN mkdir -p /var/log/cron \
 && touch /var/log/cron/cron.log

VOLUME /var/log/cron

#8.添加启动脚本
# Define working directory.
WORKDIR /usr/share/nginx/html
COPY ./entrypoint.sh /usr/share/nginx/html/
RUN chmod +x /usr/share/nginx/html/entrypoint.sh
#CMD ["supervisord", "--nodaemon", "--configuration", "/etc/supervisor/conf.d/supervisord.conf"]
ENTRYPOINT ["./entrypoint.sh"]

传送门: Dockerfile、Docker-Compose基本命令与介绍

三、镜像制作与启动

3.1 根据Dockerfile制作镜像

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

3.2 查看制作的镜像

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

3.3 启动镜像

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

3.4 浏览器查看是否成功

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

四、镜像发布

4.1 镜像发布

一定要登录

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

4.2 自动构建

当关联的github代码发生改变是,自动触发构建。

详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel

GitHub地址: https://github.com/tcyfree/anpsc

Docker Hub镜像地址: https://cloud.docker.com/repo...


以上所述就是小编给大家介绍的《详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP for the World Wide Web, Second Edition (Visual QuickStart Gu

PHP for the World Wide Web, Second Edition (Visual QuickStart Gu

Larry Ullman / Peachpit Press / 2004-02-02 / USD 29.99

So you know HTML, even JavaScript, but the idea of learning an actual programming language like PHP terrifies you? Well, stop quaking and get going with this easy task-based guide! Aimed at beginning ......一起来看看 《PHP for the World Wide Web, Second Edition (Visual QuickStart Gu》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

MD5 加密
MD5 加密

MD5 加密工具