轉:如何製做一個定製的 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"] 
相關文章
相關標籤/搜索