phpdocker
‘壹’ 怎么样使用Docker部署一个php开发环境
安装Docker
平时开发的环境一般都是Mac或者Windows,所以接下来只针对前两者写下步骤,这两个平台,官方都推荐了两种安装方式:app和工具包(toolbox)。注:app方式对系统版本和配置会有一定要求,Mac版本会自动为你安装好VM(虚拟机),但Windows需要你安装微软虚拟化产品Hyper-V,而toolbox方式则需要你额外安装virtualbox来作为docker的VM。
‘贰’ php运行docker命令失败
你的php程序是运行在docker容器内还是docker主机上?容器内的php是不能访问主机的,更不可能运行docker命令
‘叁’ 使用PHP调用Docker 命令 为什么不能成功
应该是php权限不足导致的,可以把system执行后返回的状态码打出来看一下,想看到具体的返回结果可以用exec命令.你看过后很简单吧以后不会可以向我一样经常到后盾人平台找找相关教材看看就会了,希望能帮到你,给个采纳吧谢谢罒㉨罒
‘肆’ 自己私下写php项目怎么用docker
首先还是从一个PHP在Docker容器下的Hello World实例开始。我们准备这样一个PHP文件index.php
<?php
echo"PHPinDocker";
然后在同目录下创建文本文件并命名为Dockerfile,内容为:
#从官方PHP镜像构建
FROMphp
#将index.php复制到容器内的/var/www目录下
ADDindex.php/var/www/
#对外暴露8080端口
EXPOSE8080
#设置容器默认工作目录为/var/www
WORKDIR/var/www/
#容器运行后默认执行的指令
ENTRYPOINT["php","-S","0.0.0.0:8080"]
构建这个容器:
dockerbuild-tallovince/php-helloworld.
运行这个容器
dockerrun-d-p8080:8080allovince/php-helloworld
查看结果:
curllocalhost:8080
PHPinDocker
这样我们就创建了一个用于演示PHP程序的Docker容器,任何安装过Docker的机器都可以运行这个容器获得同样的结果。而任何有上面的php文件和Dockerfile的人都可以构建出相同的容器,从而完全消除了不同环境,不同版本可能引起的各种问题。
想象一下程序进一步复杂,我们应该如何扩展呢,很直接的想法是继续在容器内安装其他用到的服务,并将所有服务运行起来,那么我们的Dockerfile很可能发展成这个样子:
FROMphp
ADDindex.php/var/www/
#安装更多服务
RUNapt-get
install-y
mysql-server
nginx
php5-fpm
php5-mysql
#编写一个启动脚本启动所有服务ENTRYPOINT
["/opt/bin/php-nginx-mysql-start.sh"]
虽然我们通过Docker构建了一个开发环境,但觉不觉得有些似曾相识呢。没错,其实这种做法和制作一个虚拟机镜像是差不多的
‘伍’ 怎么使用Docker搭建PHP开发环境
在Docker流行之前,要搭建开发环境通常有两种选择:一种是使用wamp、xampp、mamp等集成开发环境安装包,另外一种就是使用普通虚拟机来安装linux服务器,然后通过下载一键安装包(如:lnmp)或者逐个安装做需要的软件。前者虽然简单,但太不灵活,想要安装额外的软件或者版本会很麻烦或者干脆不知道如何下手;后者除了费时费力,占用本机资源过多,可能会导致系统运行缓慢,而且如果你忘了及时生成快照,一旦失误,追悔莫及。
幸好,Docker来了!它简单易用,灵活多变,方便迅捷,扫除了以上种种弊端。如果你想稍微详细的认识下这位虚拟化界的明星,传送门( 快速理解Docker )。
安装Docker
平时开发的环境一般都是Mac或者windows,Linux暂时没有研究,所以接下来只针对前两者写下步骤,这两个平台,官方都推荐了两种安装方式:app和工具包(toolbox)。注:app方式对系统版本和配置会有一定要求,而且Windows需要你安装微软虚拟化产品Hyper-V,具体见app链接页面。
APP
https://docs.docker.com/docke...
https://docs.docker.com/docke...
工具包
https://www.docker.com/proc...
以上方式本质上都会在你的系统中安装docker-engine、docker-machine、docker-compose和VirtualBox(除了Windows的app方式)。因为docker高度依赖linux内核提供的cgroup,namespace 等特性和接口,所以mac和windows平台需要使用docker-machine和虚拟机在后台创建运行一个linux内核。
而我的安装方式就是直接在 Mac 上使用brew,如果你未曾安装brew,则在终端执行以下代码:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装docker所需要的包:
brew install docker docker-machine docker-compose virtualbox
创建一个do
‘陆’ docker 安装php扩展出错,bash: docker-php-ext-install: command not found
不是这样用的啊 进容器后 直接 yum install php 就完了 进容器后就不支持 docker+命令了
‘柒’ docker 怎么启动php容器
这是最简单的架构方式,在 Docker 发展早期,Docker 被大量的滥用,比如,一个镜像内启动多服务,日志收集依旧是按照 Syslog 或者别的老方式,镜像容量非常庞大,基础镜像就能达到 80M,这和 Docker 当初提出的思想完全南辕北辙了,而 Alpine Linux 发行版作为一个轻量级 Linux 环境,就非常适合作为 Docker 基础镜像,Docker 官方也推荐使用 Alpine 而不是 Debian 作为基础镜像,未来大量的现有官方镜像也将会迁移到 Alpine 上。本文所有镜像都将以 Alpine 作为基础镜像。
‘捌’ 如何开发一个 PHP + MySQL 的 Docker 化应用
首先要理解Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
"Docker 化"的主要作用是方便移植问题,类似java和java虚拟机的开发思想,“一次编写,到处运行”;
php和mysql一般是独立的两个服务,一般运行于apache、iis 或者Nginx之中,跟你开发php没有关系。
创建 PHP 应用容器
> 因所有官方镜像均位于境外服务器,为了确保所有示例能正常运行,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 容器已经准备好了。PHP 代码中访问数据库所需的参数,是通过读取环境变量的方式声明的。
```php
$serverName = env("MYSQL_PORT_3306_TCP_ADDR", "localhost");
$databaseName = env("MYSQL_INSTANCE_NAME", "homestead");
$username = env("MYSQL_USERNAME", "homestead");
$password = env("MYSQL_PASSWORD", "secret");
/**
* 获取环境变量
* @param $key
* @param null $default
* @return null|string
*/
function env($key, $default = null)
{
$value = getenv($key);
if ($value === false) {
return $default;
}
return $value;
}
```
这样做是因为在 Docker 化应用开发的最佳实践中,通常将有状态的数据类服务放在另一个容器内运行,并通过容器特有的 link 机制将应用容器与数据容器动态的连接在一起。
绑定 MySQL 数据容器(本地)
首先,需要创建一个 MySQL 容器。
bash
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d cloud.io/mysql:5.5
之后,通过 Docker 容器间的 link 机制,便可将 MySQL 的默认端口(3306)暴露给应用容器。
bash
docker run --name some-app --link some-mysql:mysql -d app-that-uses-mysql
绑定 MySQL 数据服务(云端)
比起本地创建,在云端创建和绑定 MySQL 数据服务会更简单。
在 GitHub 上 Fork DaoCloud/php-apache-mysql-sample 或者添加自己的代码仓库。
注册成为 DaoCloud 用户。
在 DaoCloud “控制台”中选择“代码构建”。
创建新项目,选择代码源,开始构建镜像。
在“服务集成”创建 MySQL 服务实例。
将构建的应用镜像关联 MySQL 服务实例并部署在云端。
DaoCloud 使用图文介绍
了解如何用 DaoCloud 进行代码构建:参考 代码构建 。
了解如何用 DaoCloud 进行持续集成:参考 持续集成 。
了解如何用为应用准备一个数据库服务:参考 服务集成 。
了解如何部署一个刚刚构建好的应用镜像:参考 应用部署 。
‘玖’ 如何在docker容器里手动重启php
include <QtCore/QCoreApplication>
#include <QAxObject>
#include <Windows.h>
int main(int argc, char *argv[])
{
//OleInitialize(0);
//CoInitialize(0);
QCoreApplication a(argc, argv);
QAxObject *asdfg = new QAxObject("Excel.Application");
return a.exec();
}
‘拾’ docker 怎么添加php扩展
将以下代码保存为一份xxx.sh 并执行,即可扩展mysql、gd、phalcon
#! /usr/bin
PHP_VERSION=7.0.10
docker run --name php \
-v /home/wwwroot:/home/wwwroot \
-v ~/php_config/php.ini:/usr/local/etc/php/php.ini \
-p 9000:9000 \
-d php:${PHP_VERSION}-fpm
docker exec -it php sed -i "s/33/2016/g" /etc/passwd
docker exec -it php sed -i "s/33/2016/g" /etc/gr