脚本宝典收集整理的这篇文章主要介绍了Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
一、配置目录结构
![clipboard.png clipboard.png](/img/bVbpo9F?w=772&h=922)
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:一般在生产环境都是负载均衡,定时任务是单独在一个容器执行,故此是注释掉的,需要单独在定时任务容器中打开即可。
![clipboard.png clipboard.png](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
![Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
2.1 nginx与php配置文件
![Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
Tips:由于php配置文件是监听的sock,默认情况下监听端口 9000。PHP-FPM使用Unix套接字,这避免了TCP的开销。
3.1 php
![Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
二、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制作镜像
![Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
3.2 查看制作的镜像
![Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
@H_347_304@3.3 启动镜像
![Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
![Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
3.4 浏览器查看是否成功
![Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
![Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
四、镜像发布
4.1 镜像发布
一定要登录
![Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
![Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
![Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
4.2 自动构建
当关联的github代码发生改变是,自动触发构建。
![Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel](https://static.segmentfault.com/v-5cc2cd8e/global/img/squares.svg)
GitHub地址:https://github.com/tcyfree/anpsc
Docker Hub镜像地址:https://cloud.docker.com/repo...
以上是脚本宝典为你收集整理的Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel全部内容,希望文章能够帮你解决Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。