一、配置目录结构

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"]

三、镜像制作与启动

3.1 根据Dockerfile制作镜像

3.2 查看制作的镜像

3.3 启动镜像

3.4 浏览器查看是否成功

四、镜像发布

4.1 镜像发布

一定要登录

4.2 自动构建

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

Alpine跑php项目,Dockerfile构建PHP开发镜像:Alpine+Nginx+PHP7+Supervisor+Crontab+Laravel相关推荐

  1. 学习笔记五:dockerfile 构建生产环境镜像

    dockerfile 构建生产环境镜像 dockerfile构建nginx镜像 dockerfile构建tomcat镜像 tomcat 的自动启动 把Go代码基于dockerfile做成镜像 把pyt ...

  2. Dockerfile构建jdk1.8镜像

    Dockerfile 常用命令 命令 作用 FROM image_name:tag 定义了使用哪个基础镜像启动构建流程 MAINTAINER user_name 声明镜像的创建者 ENV key va ...

  3. 通过dockerfile构建jar包镜像

    1.编写Dockerfile文件 # 指定基础镜像 FROM java:8 # 维护者信息 MAINTAINER key "422943393@qq.com" # 拷贝jar包 A ...

  4. Dockerfile构建centos7python3.6镜像并启动python

    docker构建centos7python3.6镜像 python镜像下载 Dockerfile 构建和启动 python镜像下载 https://registry.npmmirror.com/bin ...

  5. 使用Dockerfile构建SpringBoot应用镜像

    一.准备 1.把你的springboot项目打包成可执行jar包 2.把jar包上传到Linux服务器 二.构建 1.在jar包路径下创建Dockerfile文件vi Dockerfile # 指定基 ...

  6. Docker进阶篇之DockerFile,教你用DockerFile构建镜像

    文章目录 一.DockerFile介绍 二.DockerFile构建过程 三.DockerFile指令 四.实战测试 4.1 对比原生CentOS 五.CMD 和 ENTRYPOINT 的区别 5.1 ...

  7. 使用Dockerfile构建自己的etcd镜像

    2019独角兽企业重金招聘Python工程师标准>>> 本篇文章手把手教你如何使用Dockerfile构建自己etcd镜像,并且已经提供基于etcd3.0.10 的image供读者使 ...

  8. React教程(六)——使用 create-react-app 快速构建 React 开发环境

    1.create-react-app是什么? 做一个react项目,构建其开发环境对初学者来说是很困难的!所以,facebook专门出了create-react-app命令,用于react项目开发环境 ...

  9. 根据Dockerfile构建镜像

    根据Dockerfile构建出一个镜像 Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条 指令对应Linux下面的一条命令.Docker程序将这些Do ...

最新文章

  1. java复杂吗_java – 是哈希一个合适的解决方案吗?我过度复杂吗?
  2. Solaris ALOM1.6 SC Password Reset
  3. 校宝在线携手神策数据 数据赋能产品服务体验双升级
  4. api接口rsa加密
  5. java 万年历_非常实用的java万年历制作方法
  6. win8 apache php mysql_windows8.1下Apache+Php+MySQL配置步骤
  7. php异业联盟平台源码,基于ThinkPHP5.1框架开发的B2C在线商城系统PHP源码
  8. Mugeda(木疙瘩)H5案例课—H5酷炫特效制作-岑远科-专题视频课程
  9. matlab 类型强制转换,关于数据类型强制转换的分析和应用
  10. Android强行进阶,自定义控件—LayoutManager,技术协会安卓部面试
  11. Butter Knife[黄油刀]配置
  12. jQuery UI 实例 - 滑块(Slider)
  13. 苏宁、长虹、格力,为何“玩不好”旧家电?
  14. 8088CPU有多少根数据线和地址线?为什么8根数据线却说是16位数据线?
  15. ACM-ICPC 2018 南京赛区网络预赛 K. The Great Nim Game(博弈)
  16. 毕业论文写作中数据获取与查询
  17. Flutter之extension
  18. 程序员在群里“匿名”骂老板,第二天被开除,聊天记录曝光
  19. 数据库 SQL Server 修改 表结构 脚本 sql语句
  20. 中联通首次确定3G上网资费 限流量包月150元

热门文章

  1. 史上最全| 14种自动化分拣系统合集|拿走!
  2. html霓虹灯文字效果,jQuery绚丽霓虹灯文字特效插件
  3. 百兆,千兆、万兆网线如何区别?
  4. Spring框架整理
  5. 从0到1搭建测试自动化框架
  6. javascript basical knowledge
  7. docker卷和目录的区别
  8. 东软载波和华为鸿蒙的关系,东软载波(300183)个股分析_牛叉诊股_同花顺财经
  9. 房产管理系统平台安全性分析?
  10. 百度搜红包得百度红包:百万豪宅大连红星海景房