导航:首页 > 编程语言 > php镜像代码

php镜像代码

发布时间:2022-09-10 16:50:00

‘壹’ 如何开发一个 php + MySQL 的 Docker 化应用

因所有官方镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。
首先,选择官方的 PHP 镜像作为项目的基础镜像。
dockerfile
FROM cloud.io/php:5.6-apache
接着,用官方 PHP 镜像内置命令 docker-php-ext-install 安装 PHP 的 MySQL 扩展依赖。
dockerfile
RUN docker-php-ext-install pdo_mysql
依赖包通过 docker-php-ext-install 安装,如果依赖包需要配置参数则通过docker-php-ext-configure 命令。
安装 pdo_mysql PHP 扩展。
然后,将代码复制到目标目录。
dockerfile
COPY . /var/www/html/

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

制作基础镜像

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

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

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

MAINTAINER Captain Dao <[email protected]>
用 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 <[email protected]>

# 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"]

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

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

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

用 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 < [email protected] >
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"]

‘肆’ 网站被镜像怎么办

恶意镜像也就是所谓的恶意克隆别人网站,在域名记录里填上别人空间的Ip地址,以此达到恶意克隆被人的网站,当浏览者打开两个截然不同网址,但网站内容却是一模一样。以下来介绍克隆原理和如何预防这些问题。
一.首先在这里我要说明以下并不是所有的网站都会被恶意镜像,当网站是这几种情况时有可能被恶意镜像,独立IP的网站是恶意镜像的必备条件,虽然我们提倡使用独立IP以免网站受到其它网站的牵连,第二是网站已安装好了文件位于根目录下,第三新建的网站域名权重不如恶意镜像对手。恶意镜像的操作非常简单只需在自己的域名管理中打开顶级域名,修改以下A记录就完事了。
二.恶意镜像的通过域名年龄优势给对手施压,然而刚刚成立的网站没有什么权重给搜索引擎造成混乱,对于技术不成熟的搜索引擎分是不出真假,往往受到恶意镜像的受害者都是刚建站的新手,不知如何去应对这些。
三.刚建站的站长们其实不用慌正所谓是上有政策,下有对策,即便恶意镜像成功了,两个网站看起来一模一样,恶意镜像者并非完全控制了我们的网站,下面我来介绍不同情况以不同的方法来应对。
1.更换IP或空间。本条仅提供一种可行性方案。事实上,如果你不解决独立IP及根目录程序问题,只是治标不治本。因为恶意者更换成本及操作上更简单。
2.改变网站程序位置,由根目录换到一级目录。如果该方案可以实施的话,可以有效解决网站恶意镜像问题,因为恶意镜像只能解析IP,而无法与目录进行绑定。
3.服务器端操作。如果你的服务器可以设置禁止直接通过IP访问,必须使用某个域名访问,那么设置好它。

‘伍’ php如何通过linux命令,在docker中执行一个文件并且接收docker容器中执行之后,控制台的返回的结果

Docker中我们一般会有两种执行命令的方式,一种是直接进入容器的命令行,在终端执行并查看结果,一种是在后台执行,并不会在终端查看结果。
1、进入容器命令行
su root
docker run -i -t ubuntu:16.04/bin/bash#或者执行下面这句docker run -it ubuntu:16.04/bin/bash

-i和-t的作用是帮助你进入交互模式,如果不加这部分,你将无法进入容器内部,更别说使用命令行了。/bin/bash的意思就是使用容器的命令行来输入命令。执行结果如下:
root@7d150a0fb029:/#
root后面跟的就是容器id,表明你已经进入容器,可以输入命令了,你可以输入一些常用命令试试:
root@7d150a0fb029:/# docker run -i -t ubuntu:16.04 /bin/bash
结果输出了镜像的内核版本信息:
Linux version 4.13.0-36-generic (buildd@lgw01-amd64-033)(gcc version 5.4.020160609(Ubuntu5.4.0-6ubuntu1~16.04.9))#40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018

通过exit可退出容器。
2、后台执行命令
输入下面的代码,-d表示的就是后台运行,这点可以直接通过docker run –help查看该命令的功能。下面这句话的意思就是在镜像的程序中添加引号内的代码,并在后台运行。
docker run -d ubuntu:16.04 /bin/sh -c "while true; do echo hello world; sleep 1;done"
输出结果不会显示运行的结果,而是给出新建的容器id,这里说明一下,每次输入docker run命令都会新建一个容器,产生一个新的id。
输出结果如下:

查看一下正在运行的容器:
root@cdl-XPS15R:/home/cdl# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7188be9bd7b ubuntu:16.04"/bin/sh -c 'while t…"13 seconds ago Up11 seconds keen_vaughan1b6ba17f7df7 ubuntu:16.04"/bin/bash"2 minutes ago Exited(0)2 minutes ago cocky_noether7d150a0fb029 ubuntu:16.04"/bin/bash"4 minutes ago Exited(0)2 minutes ago hopeful_banach

这里会发现,第一个容器的id和后台运行的容器id前几位一模一样,但是长度要长很多,其实是一样的,只不过通过ps命令打印输出时为了方便显示只显示了前几位。
如果想要进入后台运行的容器的命令行而不创建新的容器,只需要输入以下命令:
#Exec是进入已经存在的容器,run是创建新容器docker Exec-it c7188be9bd7b /bin/bash

输入哪个更长的id也是一样的效果:
docker Exec -it /bin/bash
输出结果都是:
root@c7188be9bd7b:/#

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

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

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

用 RUN 命令调用 apt-get 包管理器安装 PHP 环境所依赖的程序包。
安装依赖包相对比较固定,因此该动作应该尽量提前,这样做有助于提高镜像层的复用率。

‘柒’ 网站被镜像了怎么办

  1. 网络站长平台投诉
    通过下面的渠道可以反馈问题
    1.jubao..com
    2.tousu..com
    3.zhanzhang..com/feedback
    但处理速度是根据对用户造成的伤害来界定处理优先级。

  2. 屏蔽镜像网站服务器IP
    镜像网站看似一个完整的站点,其实每次用户访问网站的时候,程序还是调用的原网站的数据,所以可以屏蔽这个服务器的IP,禁止抓取网站数据。如果是LINUX主机可以通过以下方法获取和屏蔽镜像网站服务器IP。

  3. 获取镜像网站IP,复制如下代码,新建一个php文件,并命名为“ip.php”上传到网站根目录。

<?php
$file="ip.txt";//保存的文件名
$ip=$_SERVER['REMOTE_ADDR'];
$handle=fopen($file,'a');
fwrite($handle,"IPAddress:");
fwrite($handle,"$ip");
fwrite($handle," ");
fclose($handele);
?>

4. 访问镜像网站,在地址后面加.../ip.php,如:http://www.gannxy.com/ip.php,然后网站根目录下会生成一个ip.txt的文件,打开复制里面的ip地址。查找服务器IP地址还可以通过站长工具的HTTP状态码查询

5. 屏蔽镜像站点IP,打开.htaccess文件,加上如下代码
Linux下 规则文件.htaccess(没有可以手工创建.htaccess文件到站点根目录),自行修改红字中的IP地址

<IfMolemod_rewrite.c>
RewriteEngineOn
#Blockip
RewriteCond%{http:X-Forwarded-For}&%{REMOTE_ADDR}(188.129.143.73)[NC]
RewriteRule(.*)-[F]
</IfMole>

然后再次访问或者刷新镜像网站,这时候就会出现403错误(禁止访问),现在就可以等着蜘蛛删除了
windows2008下 规则文件web.config (手工创建web.config文件到站点根目录) ,自行修改红字中的IP地址

<?xmlversion="1.0"encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rulename="bandip"stopProcessing="true">
<matchurl="(.*)"/>
<conditionslogicalGrouping="MatchAny">
<addinput="%{HTTP_X_FORWARDED_FOR}&%{REMOTE_ADDR}"pattern="(188.129.143.73)"/>
</conditions>
<actiontype="AbortRequest"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>


注:如果不知道如何获取和屏蔽镜像网站IP地址可以咨询主机商,也会帮助解决。但缺点是如果对方更换了IP地址还要重新写一次。

6. 添加跳转代码
这个办法就简单粗暴了,直接在网站head下加入一段JS代码,就可以实现镜像站自动跳转到主站,代码如下:

<scripttype="text/javascript">if(document.location.protocol!="https:"&&navigator.userAgent.indexOf("MSIE6.0")<0){location.href=location.href.replace(/^http:/,"https:");}if(document.location.host!="www.gannxy.com"){location.href=location.href.replace(document.location.host,'www.gannxy.com);}</script>

‘捌’ docker php 镜像怎么配置

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

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

4.用 RUN 命令调用 apt-get 包管理器安装 PHP 环境所依赖的程序包。
安装依赖包相对比较固定,因此该动作应该尽量提前,这样做有助于提高镜像层的复用率。

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

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

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

用 RUN 命令调用 apt-get 包管理器安装 PHP 环境所依赖的程序包。
安装依赖包相对比较固定,因此该动作应该尽量提前,这样做有助于提高镜像层的复用率

‘拾’ 如何使用docker中的php环境来调试代码

Docker容器化PHP开发环境搭建-DVWA (含xdebug调试)
摘要:Docker容器化技术在过去的2015年得到了大面积的普及应用,特别是以灵雀云、数人云、阿里云以及阿里百川TAE2.0等为代表的服务商的推动,可以预见2016会是云服务大爆发的一年,会有越来越多的互联网企业将自己的业务部署到基于Docker容器的环境里来。
Docker容器化技术在过去的2015年得到了大面积的普及应用,特别是以灵雀云、数人云、阿里云以及阿里百川TAE2.0等为代表的服务商的推动,可以预见2016会是云服务大爆发的一年,会有越来越多的互联网企业将自己的业务部署到基于Docker容器的环境里来。
本文以 DVWA 部署为例,来讲解PHP环境部署+基于XDEBUG调试环境的容器化解决方案。
Github代码
segmentfault参考链接
Docker容器化PHP开发环境搭建-DVWA (含xdebug调试)
创建目录
基础目录
~/dvwa/data 存放MySQL数据库
~/dvwa/htdocs 项目代码
~/dvwa/log 存放所有输出log
从代码仓库构建
cd ~
git clone https://github.com/MarkThink/DockerPHP.git dvwa
创建这些目录
mkdir ~/dvwa ~/dvwa/data ~/dvwa/data/mysql ~/dvwa/log ~/dvwa/log/nginx ~/dvwa/log/php ~/dvwa/htdocs
下载镜像及构建
cd ~/dvwa/htdocs/dvawfiles
make pull
make dl
make build
下载代码
cd ~/dvwa/htdocs
git clone https://github.com/MarkThink/DVWA.git dvwa_app
IDE调试配置
Docker容器化PHP开发环境搭建-DVWA (含xdebug调试)Docker容器化PHP开发环境搭建-DVWA (含xdebug调试)
绑定域名
```
sudo vi /etc/hosts
192.168.99.100

阅读全文

与php镜像代码相关的资料

热点内容
编译动态库时会连接依赖库吗 浏览:706
淘宝手机加密是随机的吗 浏览:672
解压包子怎么装饰 浏览:585
四个数凑24算法 浏览:676
哪一种不是vi编译器的模式 浏览:168
xp在此处打开命令窗口 浏览:128
代码编译运行用什么软件 浏览:997
动态库在程序编译时会被连接到 浏览:760
python超简单编程 浏览:259
获取命令方 浏览:976
怎样制作文件夹和图片 浏览:59
调研编译写信息 浏览:861
python冯诺依曼 浏览:419
同时安装多个app有什么影响 浏览:254
奥术杀戮命令宏 浏览:184
用sdes加密明文字母e 浏览:361
单片机原理及应用试题 浏览:425
易语言开启指定文件夹 浏览:40
马思纯参加密室大逃脱 浏览:322
文件夹冬季浇筑温度 浏览:712