zoukankan      html  css  js  c++  java
  • 转:如何制作一个定制的 PHP 基础 Docker 镜像(一)

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

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

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

    制作基础镜像

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

    FROM ubuntu:trusty  
    

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

    设置镜像的维护者,相当于镜像的作者或发行方。

    MAINTAINER Captain Dao <support@daocloud.io>  
    

    用 RUN 命令调用 apt-get 包管理器安装 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 
    

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

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

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

    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"]  
  • 相关阅读:
    高精度计算
    高精度除以低精度
    P1258 小车问题
    POJ 2352 stars (树状数组入门经典!!!)
    HDU 3635 Dragon Balls(超级经典的带权并查集!!!新手入门)
    HDU 3938 Portal (离线并查集,此题思路很强!!!,得到所谓的距离很巧妙)
    POJ 1703 Find them, Catch them(确定元素归属集合的并查集)
    HDU Virtual Friends(超级经典的带权并查集)
    HDU 3047 Zjnu Stadium(带权并查集,难想到)
    HDU 3038 How Many Answers Are Wrong(带权并查集,真的很难想到是个并查集!!!)
  • 原文地址:https://www.cnblogs.com/guoyongrong/p/4692464.html
Copyright © 2011-2022 走看看