内容简介:Tips:一般在生产环境都是负载均衡,定时任务是单独在一个容器执行,故此是注释掉的,需要单独在定时任务容器中打开即可。
一、配置目录结构
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:一般在生产环境都是负载均衡,定时任务是单独在一个容器执行,故此是注释掉的,需要单独在定时任务容器中打开即可。
2.1 nginx与php配置文件
Tips:由于php配置文件是监听的sock,默认情况下监听端口 9000。PHP-FPM使用Unix套接字,这避免了TCP的开销。
3.1 php
二、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制作镜像
3.2 查看制作的镜像
3.3 启动镜像
3.4 浏览器查看是否成功
四、镜像发布
4.1 镜像发布
一定要登录
4.2 自动构建
当关联的github代码发生改变是,自动触发构建。
GitHub地址: https://github.com/tcyfree/anpsc
Docker Hub镜像地址: https://cloud.docker.com/repo...
以上所述就是小编给大家介绍的《详解构建PHP开发基础镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 详解使用 gradle 构建您的 Android 项目(1)
- Kubernetes 原生 CI/CD 构建框架 Argo 详解
- 五小时构建云原生电商平台 | KubeCon SOFAStack Workshop 详解
- vueSSR: 从0到1构建vueSSR项目 --- 路由的构建
- 在 Android Studio 里使用构建分析器提升构建性能
- [译] 使用 React 和 ImmutableJS 构建一个拖放布局构建器
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
史蒂夫·乔布斯传
[美] 沃尔特·艾萨克森 / 管延圻、魏群、余倩、赵萌萌、汤崧 / 中信出版社 / 2011-10-24 / 68.00元
这本乔布斯唯一授权的官方传记,在2011年上半年由美国出版商西蒙舒斯特对外发布出版消息以来,备受全球媒体和业界瞩目,这本书的全球出版日期最终确定为2011年11月21日,简体中文版也将同步上市。 两年多的时间,与乔布斯40多次的面对面倾谈,以及与乔布斯一百多个家庭成员、 朋友、竞争对手、同事的不受限的采访,造就了这本独家传记。 尽管乔布斯给予本书的采访和创作全面的配合,但他对内容从不干......一起来看看 《史蒂夫·乔布斯传》 这本书的介绍吧!