问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何制作一个定制的 PHP 基础 Docker 镜像

发布网友 发布时间:2022-02-26 21:29

我来回答

1个回答

热心网友 时间:2022-02-26 22:59

制作基础镜像

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

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

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

MAINTAINER Captain Dao <support@cloud.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@cloud.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"]
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
寺院建筑布局 政立路小学幼升小录取通知书发了吗 富士康员工子女幼升小通知书发了吗? 2015上海幼升小如果收到录取通知书了,还能换学校吗 求《大约是爱》《别拿爱情说事儿》不经语《白日的星光》《深爱》迷 ... 别拿爱情说事儿作者简介 不经语的出版作品 600439瑞贝卡今日上涨,请问后势如何 梅赛德斯奔驰场馆能容纳多少人 梅赛德斯奔驰文化中心多少座位 女生经常看你是什么意思? 怎么在服务器上制作docker镜像 在制作Docker镜像过程中,能直接使用已有的docker镜像吗? 如何建立你自己的Docker镜像 如何将应用打包成为 Docker 镜像 如何制作nfs docker 镜像 如何制作docker nginx镜像 微信7.0.12怎么把表情保存到本地相册? 怎么制作docker镜像并上传 怎么制作docker镜像 有多大 如何把微信上的兔斯基表情包保存到本地? 如何构建docker镜像 如何制作自己的docker镜像 如何制作docker镜像 请教高手,如何在EXCEL中自动换行求和, 在excel中如何自动求和,如何隔行求和,请教高手,谢谢 docker下容器怎么执行命令? docker 怎么启动容器的所有 如何启动一个已经创建的docker容器,并进入SHELL对其操作 docker进入容器之后如何退出呢? 如何进入Docker容器 如何制作一个定制的 Python 基础 Docker 镜像 如何制作一个精简的docker镜像 如何使用Dockerfile构建镜像 Docker如何创建镜像 怎么制作tomcat和nginx mysqldocker镜像 如何制作 Python 的 Docker 镜像 docker 如何删除镜像及其下的所有容器? 如何删除运行的docker镜像 删除Docker Registry里的镜像怎么那么难 如何删除docker register镜像 docker仓库的镜像怎么删除 docker删不掉镜像,怎么办 docker 删除不掉镜像怎么办 怎么把docker里面已经创建的容器删除 如何删除docker images下的镜像 怎么把电话号码存到微信里 Docker怎么删掉不用的layer 怎样把电话号添加到微信上 为什么删除docker镜像后依然占用本地空间 怎样把电话号码导入到微信通讯录里面?