㈠ docker php 怎么这么大
步骤:
1、 在安装好php环境的容器,参考上面贴出的链接那篇文章的部分,做好基础工作:
#创建工作目录
mkdir /rootfs
#进入工作目录
cd /rootfs
#创建基础目录
mkdir -p bin etc lib proc sys tmp dev/pts usr/lib64 usr/bin usr/local/bin
#创建一个空的DNS服务用的文件
touch etc/resolv.conf
#复制名称解析文件
cp /etc/nsswitch.conf etc/nsswitch.conf
#创建用户和用户组文件
echo root:x:0:0:root:/:/bin/sh > etc/passwd
echo root:x:0: > etc/group
#创建php程序运行的用户
echo www:x:1001:1001:root:/:/bin/sh >> etc/passwd
echo www:x:1001: >> etc/group
#依赖库软链接
ln -s lib lib64
#工具软链接
ln -s bin sbin
#下载busybox,若网速慢可以用迅雷下载,然后复制到/sbin/busybox
curl -o /sbin/busybox http://busybox.net/downloads/binaries/1.21.1/busybox-x86_64
#加权限
chmod +x /sbin/busybox
#安装busybox
cp /sbin/busybox bin
busybox --install -s bin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2、找依赖,假设我的php安装在/usr/local/php中,用交互模式进入容器
运行命令查看依赖:
ldd /usr/local/php/sbin/php-fpm
1
1
会列出一大堆依赖库,并且这些库在不同的路径。由于用到busybox,那就将这些库复制到工作目录的根目录的lib即可。即/rootfs/lib/中,用这个工具找出来的是不完整的、还有c++运行库等等。
我整理出来的完整依赖库是:
ld-linux-x86-64.so.2
libbz2.so.1
libc.so.6
libcom_err.so.2
libcrypt.so.1
libcrypto.so.10
libcurl.so.4
libdl.so.2
libfreebl3.so
libfreetype.so.6
libgcc_s.so.1
libgssapi_krb5.so.2
libiconv.so.2
libidn.so.11
libjpeg.so.62
libk5crypto.so.3
libkeyutils.so.1
libkrb5.so.3
libkrb5support.so.0
liblber-2.4.so.2
libldap-2.4.so.2
liblzma.so.5
libm.so.6
libmcrypt.so.4
libnsl.so.1
libnspr4.so
libnss_files.so.2
libnss3.so
libnssutil3.so
libpcre.so.1
libplc4.so
libplds4.so
libpng15.so.15
libpthread.so.0
libresolv.so.2
librt.so.1
libsasl2.so.3
libselinux.so.1
libsmime3.so
libssh2.so.1
libssl.so.10
libssl3.so
libstdc++.so.6
libxml2.so.2
libz.so.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
当然根据你php安装的扩展而定,但是有些决不能缺少,
复制到rootfs/lib/
3、复制php程序
#复制PHP程序
cp -R /usr/local/php /rootfs/usr/local/php
#复制启动脚本
cp /etc/init.d/php-fpm /rootfs/php-fp
将 /usr/local/php/php-fpm.conf 改为以下配置,守护进程方式运行改为no,不然 到时候只能用交互模式 docker run -it 那种。
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice
daemonize = no #这里重要
[www]
listen = 0.0.0.0:9000 #这里也重要
listen.backlog = -1
#listen.allowed_clients = any
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 6
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log
4、打包tar文件
tar cf /rootfs.tar .
5、按ctrl+p+q使php容器后台运行,找个地方创建工作目录,并且写DockerFile。
#将rootfs.tar 复制出来,其实这个已经是一个基于busybox+php创建的小型系统了
docker cp technofiend/php:/rootfs.tar .
写DockerFile
FROM scratch
MAINTAINER Technofiend <[email protected]>
ADD rootfs.tar /
WORKDIR /home
EXPOSE 9000
ENTRYPOINT ["/php-fpm", "start"]
然后build系统
docker build -t technofiend/miniphp .
这里写图片描述
再看看体积,瘦了很多。比还没用过的centos系统还要少。
要是导出来再压缩的话,就只有50M左右,真是快速部署必不可少的玩意啊!
注意:体积少的镜像虽然可以减少了网络传输的时间,达到快速部署的目的,但体积少的容器某些功能例如busybox提供的,可能没有完整版的性能好。所以,还是看实际用途吧!
别忘了,要定期进行安全升级,不然很可能就会有安全隐患。
㈡ 自己私下写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部署一个PHP开发环境
安装Docker
平时开发的环境一般都是Mac或者Windows,所以接下来只针对前两者写下步骤,这两个平台,官方都推荐了两种安装方式:app和工具包(toolbox)。注:app方式对系统版本和配置会有一定要求,Mac版本会自动为你安装好VM(虚拟机),但Windows需要你安装微软虚拟化产品Hyper-V,而toolbox方式则需要你额外安装virtualbox来作为docker的VM。
㈤ 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 环境所依赖的程序包。
安装依赖包相对比较固定,因此该动作应该尽量提前,这样做有助于提高镜像层的复用率。
㈥ docker 怎么启动php容器
这是最简单的架构方式,在 Docker 发展早期,Docker 被大量的滥用,比如,一个镜像内启动多服务,日志收集依旧是按照 Syslog 或者别的老方式,镜像容量非常庞大,基础镜像就能达到 80M,这和 Docker 当初提出的思想完全南辕北辙了,而 Alpine Linux 发行版作为一个轻量级 Linux 环境,就非常适合作为 Docker 基础镜像,Docker 官方也推荐使用 Alpine 而不是 Debian 作为基础镜像,未来大量的现有官方镜像也将会迁移到 Alpine 上。本文所有镜像都将以 Alpine 作为基础镜像。
㈦ docker 安装php扩展出错,bash: docker-php-ext-install: command not found
不是这样用的啊 进容器后 直接 yum install php 就完了 进容器后就不支持 docker+命令了
㈧ 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
㈨ docker 会影响系统的php环境么
如果对PHP环境配置不了解的话,建议你使用PHPWAMP绿色集成环境,
PHPWAMP同时运行几百个不同的PHP版本。
支持所有Windows系统,目前最新的Windows10也没问题。
PHPWAMP自带php5.2、php5.3、php5.4、php5.5、php5.6、php7这6个默认版本,拥有共生模式(与其他环境同时使用),单身狗霸体模式,强行打通阻碍运行网站。
如果还不满意,可以自定义设置任何PHP版本,700个PHP版本随便你切换。
这篇教程文章里提供700多个PHP版本下载。(700个PHP版本一键切换)
网络搜索这个文章标题:
PHP集成环境如何自定义PHP版本,同时运行多个php版本一键开启模块。
搜到的文章中,在文章的附件里有提供PHP历史版本下载,差不多700多个PHP版本。
㈩ 如何在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();
}