转:如何制做一个定制的 PHP 基础 Docker 镜像(一)

原文来自于:http://open.daocloud.io/ru-he-zhi-zuo-yi-ge-ding-zhi-de-php-ji-chu-docker-jing-xiang/php

目标:准备一个定制的 PHP 基础镜像。基础镜像,一般为含最小功能的系统镜像,以后的应用镜像都以此为基础。html

本项目代码维护在 DaoCloud/php-apache-image 项目中。mysql

制做基础镜像

选择 Ubuntu 官方的 14.04 版本为咱们依赖的系统镜像。git

FROM ubuntu:trusty 

因全部官方镜像均位于境外服务器,为了确保全部示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。若是使用 DaoCloud 的镜像源,则指向:FROM daocloud.io/ubuntu:trustygithub

设置镜像的维护者,至关于镜像的做者或发行方。sql

MAINTAINER Captain Dao <support@daocloud.io> 

用 RUN 命令调用 apt-get 包管理器安装 PHP 环境所依赖的程序包。docker

安装依赖包相对比较固定,所以该动做应该尽可能提早,这样作有助于提升镜像层的复用率。apache

RUN apt-get update \ && apt-get -y install \ curl \ wget \ apache2 \ libapache2-mod-php5 \ php5-mysql \ php5-sqlite \ php5-gd \ php5-curl \ php-pear \ php-apc \ 

用 RUN 命令调用 Linux 命令对 Apache 服务和 PHP 参数进行配置。ubuntu

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf \ 

用 RUN 命令调用 mkdir 来准备一个干净的放置代码的目录。bash

RUN mkdir -p /app && rm -rf /var/www/html && ln -s /app /var/www/html 

将本地的代码添加到目录,并指定其为当前的工做目录。

COPY . /app WORKDIR /app 

设置启动脚本的权限,指定暴露的容器内端口地址。

最后指定容器启动的进程。

RUN chmod 755 ./start.sh EXPOSE 80 CMD ["./start.sh"] 

至此一个 PHP 的基础镜像制做完毕,你能够在本地运行 docker build -t my-php-base . 来构建出这个镜像并命名为 my-php-base

因为网络环境的特殊状况,在本地运行 docker build 的时间会很长,而且有可能失败。推荐使用 DaoCloud 加速器 和 DaoCloud 的云端 代码构建 功能。

完整 Dockerfile

# Ubuntu 14.04,Trusty Tahr(可靠的塔尔羊)发行版 FROM ubuntu:trusty # 道客船长荣誉出品 MAINTAINER Captain Dao <support@daocloud.io> # APT 自动安装 PHP 相关的依赖包,如需其余依赖包在此添加 RUN apt-get update \ && apt-get -y install \ curl \ wget \ apache2 \ libapache2-mod-php5 \ php5-mysql \ php5-sqlite \ php5-gd \ php5-curl \ php-pear \ php-apc \ # 用完包管理器后安排打扫卫生能够显著的减小镜像大小 && apt-get clean \ && apt-get autoclean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ # 安装 Composer,此物是 PHP 用来管理依赖关系的工具 # Laravel Symfony 等时髦的框架会依赖它 && curl -sS https://getcomposer.org/installer \ | php -- --install-dir=/usr/local/bin --filename=composer # Apache 2 配置文件:/etc/apache2/apache2.conf # 给 Apache 2 设置一个默认服务名,避免启动时给个提示让人紧张. RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf \ # PHP 配置文件:/etc/php5/apache2/php.ini # 调整 PHP 处理 Request 里变量提交值的顺序,解析顺序从左到右,后解析新值覆盖旧值 # 默认设定为 EGPCS(ENV/GET/POST/COOKIE/SERVER) && sed -i 's/variables_order.*/variables_order = "EGPCS"/g' \ /etc/php5/apache2/php.ini # 配置默认放置 App 的目录 RUN mkdir -p /app && rm -rf /var/www/html && ln -s /app /var/www/html COPY . /app WORKDIR /app RUN chmod 755 ./start.sh EXPOSE 80 CMD ["./start.sh"] 
相关文章
相关标签/搜索