为了账号安全,请及时绑定邮箱和手机立即绑定

请问该如何制作一个定制的 PHP 基础 Docker 镜像?

/ 猿问

请问该如何制作一个定制的 PHP 基础 Docker 镜像?

ibeautiful 2019-07-03 11:07:50

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


查看完整描述

3 回答

?
慕盖茨1488219

因为安装了docker我本地已经没有/usr/bin/php文件。
这时候,如果我需要使用php cli来执行一个php,如何操作?
我想,可以ssh进行php容器,然后在容器内执行 /usr/bin/php xxx.php
但是在phpstrom IDE中感觉使用起来不太方便。
然后我看到phpstorm有个 docker的plugin,需要配置个docker-machine
问题来了,我开发环境是ubuntu 16.04

$ docker-machine create -d none --url="tcp://0.0.0.0:2375" default

$ docker-machine env default

Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "0.0.0.0:2375": dial tcp 0.0.0.0:2375: getsockopt: connection refused
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

查看完整回答
反对 回复 2019-07-06
?
慕标5265247

选择 Ubuntu 官方的 14.04 版本为我们依赖的系统镜像。
dockerfile
FROM ubuntu:trusty

因所有官方镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。如果使用 DaoCloud 的镜像源,则指向:FROM daocloud.io/ubuntu:trusty
设置镜像的维护者,相当于镜像的作者或发行方。
dockerfile
MAINTAINER Captain Dao <support@daocloud.io>

用 RUN 命令调用 apt-get 包管理器安装 PHP 环境所依赖的程序包。
安装依赖包相对比较固定,因此该动作应该尽量提前,这样做有助于提高镜像层的复用率。
dockerfile
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 参数进行配置。
dockerfile
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf \

用 RUN 命令调用 mkdir 来准备一个干净的放置代码的目录。
dockerfile
RUN mkdir -p /app && rm -rf /var/www/html && ln -s /app /var/www/html

将本地的代码添加到目录,并指定其为当前的工作目录。
dockerfile
COPY . /app
WORKDIR /app

设置启动脚本的权限,指定暴露的容器内端口地址
最后指定容器启动的进程。
dockerfile
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
``` 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"]



查看完整回答
反对 回复 2019-07-06
?
天天世纪
  1. 进入Cygwin的官网下载最新版的Cygwin软件,根据自己的电脑选择位数,32位的就选32位的系统。

  2. 再进入Eclipse CDT的官网,下载最新版的CDT软件。

  3. 新建一个文件夹Eclipse-Neon,将下载好的两个软件放进去。

  4. 解压eclipse软件到当前文件夹中。

  5. 新建文件夹cygwin64,将cygwin的安装软件放进去。

  6. 进入cygwin64,双击打开set-x86_64.exe,开始在本地安装cygwin环境。

  7. 选择Install from Internet。

  8. 指定Cygwin软件的根目录位置。

  9. 指定Cygwin安装的软件包的存放路径。

  10. 选择联网的方式。

  11. 主要是选择需要安装的Linux软件包,默认情况下,Cygwin没有选择C++开发所需要的包,需要选中软件包。

  12. 等到安装结束后,查看root目录下是否安装成功,添加Cygwin的路径到Windows的用户环境变量PATH中。

  13. 在cygwin命令行中查看当前安装的gcc和gdb的版本,以验证基本的软件包是否安装成功。

  14. 开始新建一个C语言工程,取名为test,编译链工具选择Cygwin GCC。

  15. 配置路径映射,点击调试按钮,将调用GDB调试软件即可。


查看完整回答
反对 回复 2019-07-06

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信