├── README.md ├── c7-systemd-php7 ├── Dockerfile └── build.sh ├── c7-systemd ├── Dockerfile └── bulid.sh ├── centos └── README.md ├── dockerui └── README.md ├── gitbook-build-template ├── Dockerfile ├── README.md ├── book.json └── build.sh ├── gitbook-build ├── Dockerfile ├── README.md └── build.sh ├── mysql └── README.md ├── nginx └── README.md ├── php56-fpm-centos68-gccext ├── Dockerfile └── run.sh ├── php56-fpm-centos68-withext ├── Dockerfile ├── README.md ├── ext.tar.gz ├── libgearman.tar.gz ├── run.sh ├── xdebug.so └── yaf.so ├── php56-fpm-centos68 ├── Dockerfile ├── Dockerfile_online ├── Dockerfile_online_v2 ├── README.md ├── build.sh ├── run.sh ├── xdebug.so.tar.gz └── yar-1.2.5.tgz ├── php70-fpm-centos68 ├── Dockerfile ├── README.md ├── libmcrypt-2.5.8.tar.gz ├── mcrypt-2.6.8.tar.gz ├── mhash-0.9.9.9.tar.gz ├── nginx-1.12.2.tar.gz ├── phpredis-3.0.0.tar.gz ├── phpredis-3.1.2.tar.gz ├── redis-3.2.6.tar.gz ├── run.sh ├── swoole-src-1.10.1.tar.gz └── yar-2.0.2.tgz ├── php71-fpm-centos68-phalcon-withext ├── Dockerfile ├── README.md ├── docker-compose.yml ├── ext.tar.gz ├── libgearman.so.8 └── run.sh ├── php71-fpm-centos68-phalcon ├── Dockerfile ├── README.md ├── build.sh ├── cphalcon-3.3.1.tar.gz └── run.sh ├── php71-fpm-centos68 ├── Dockerfile ├── Dockerfile_online ├── README.md ├── build.sh └── run.sh ├── php71-fpm-ubuntu1604-phalcon ├── Dockerfile ├── docker-compose.yml └── run.sh └── redis └── README.md /README.md: -------------------------------------------------------------------------------- 1 | # docker-images 2 | 3 | 本仓库为自定义及收藏的一些镜像,方便使用。包含PHP5、PHP7开发环境等镜像。 4 | 5 | 6 | ## Docker常用命令 7 | 8 | ``` bash 9 | # 下载镜像 10 | docker pull IMAGE[:TAG] 11 | docker pull daocloud.io/centos:6.8 12 | 13 | # 查看已下载镜像列表 14 | docker images [-a] 15 | 16 | # 给镜像添加标签 17 | docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG] 18 | dcoker tag daocloud.io/centos:6.8 centos:6.8 19 | 20 | # 删除镜像:必须先删除依赖该镜像的容器才能删除镜像 21 | docker rmi [OPTIONS] IMAGE [IMAGE...] 22 | 23 | # 创建并运行容器 24 | docker run [OPTIONS] IMAGE [COMMOND] [ARG...] 25 | docker run -it daocloud.io/centos:6.8 /bin/bash 26 | 27 | # 启动容器 28 | docker start CONTAINER_ID 29 | 30 | # 停止容器 31 | docker stop CONTAINER_ID 32 | 33 | # 删除容器 34 | docker rm CONTAINER_ID 35 | 36 | # 执行容器内命令 37 | docker exec [-d] [-i] [-t] CONTAINER_ID [COMMOND] [ARG...] 38 | docker exec -it 4b5634aaef69 /bin/bash 39 | docker exec 4b5634aaef69 ps -ef 40 | docker exec 4b5634aaef69 nginx -s reload 41 | 42 | # 导出镜像 43 | docker save [OPTIONS] IMAGE [IMAGE...] 44 | docker save -o ubuntu_latest.tar ubuntu:latest 45 | 46 | # 导入镜像 47 | docker load --input ubuntu_latest.tar 48 | docker load < ubuntu_latest.tar 49 | ``` 50 | 51 | ## 镜像仓库 52 | 53 | - https://hub.docker.com/explore/ 54 | - https://dashboard.daocloud.io/ 55 | - https://c.163.com/ 56 | 57 | ## 镜像加速器 58 | 59 | 1、加速器 DaoCloud - 业界领先的容器云平台 60 | https://www.daocloud.io/mirror#accelerator-doc 61 | 62 | 2、镜像加速 | Docker 中国 63 | https://www.docker-cn.com/registry-mirror 64 | 65 | ## 学习资料 66 | 67 | 1、Docker - 随笔分类 - 飞鸿影~ - 博客园 68 | http://www.cnblogs.com/52fhy/category/895062.html 69 | 70 | -------------------------------------------------------------------------------- /c7-systemd-php7/Dockerfile: -------------------------------------------------------------------------------- 1 | # centos7 php7 2 | FROM local/c7-systemd 3 | 4 | MAINTAINER yjc@52fhy.com 5 | 6 | ENV PHP_VERSION 7.0.12 7 | ENV PHP_URL="http://cn2.php.net/distributions/php-7.0.12.tar.bz2" 8 | 9 | RUN yum install -y gcc gcc-c++ bison autoconf wget lrzsz \ 10 | && yum install -y make cmake libtool libtool-ltdl-devel \ 11 | && yum install -y libjpeg-devel libpng-devel freetype-devel gd-devel \ 12 | && yum install -y python-devel patch \ 13 | && yum install -y openssl openssl-devel ncurses-devel \ 14 | && yum install -y bzip2 bzip2-devel.x86_64 unzip zlib-devel \ 15 | && yum install -y libxml2 libxml2-devel \ 16 | && yum install -y curl-devel \ 17 | && yum install -y readline-devel \ 18 | && yum install -y pcre-devel \ 19 | && yum clean all 20 | 21 | RUN wget -O /libmcrypt-2.5.7.tar.gz ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz \ 22 | && wget -O /mcrypt-2.6.8.tar.gz https://jaist.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz \ 23 | && wget -O /mhash-0.9.9.9.tar.gz https://jaist.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz \ 24 | && tar zxvf /libmcrypt-2.5.7.tar.gz \ 25 | && cd /libmcrypt-2.5.7 && ./configure && make && make install && cd - / && rm -rf /libmcrypt* \ 26 | && tar zxvf /mhash-0.9.9.9.tar.gz && cd mhash-0.9.9.9 && ./configure && make && make install && cd - / && rm -rf /mhash* \ 27 | && tar zxvf /mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8 && LD_LIBRARY_PATH=/usr/local/lib ./configure && make && make install && cd - / && rm -rf /mcrypt* 28 | 29 | RUN wget -O /php.tar.bz2 "$PHP_URL" \ 30 | && tar jxvf /php.tar.bz2 && cd php-${PHP_VERSION}/ \ 31 | && ./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --enable-inline-optimization --enable-opcache --enable-session --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pdo-sqlite --with-sqlite3 --with-gettext --enable-mbregex --enable-mbstring --enable-xml --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-xmlrpc --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-curlwrappers --with-zlib --enable-zip --with-bz2 --with-gd --enable-gd-native-ttf --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-readline \ 32 | && make && make install \ 33 | && cp php.ini-production php.ini \ 34 | && cp php.ini* /usr/local/php/etc/ \ 35 | && cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf \ 36 | && make clean && yum clean all && cd - && rm -rf /php-${PHP_VERSION}/ 37 | 38 | RUN wget http://nginx.org/download/nginx-1.11.1.tar.gz \ 39 | && tar zxvf nginx-1.11.1.tar.gz && cd nginx-1.11.1 \ 40 | && ./configure \ 41 | --prefix=/usr/local/nginx \ 42 | --with-http_stub_status_module \ 43 | --with-http_ssl_module \ 44 | --with-http_realip_module \ 45 | --with-http_sub_module \ 46 | --with-http_gzip_static_module \ 47 | --with-pcre \ 48 | && make && make install \ 49 | && ln -sf /usr/local/nginx/sbin/nginx /usr/bin \ 50 | && make clean && yum clean all \ 51 | && cd ../ && rm -rf php-7.0.7* && rm -rf nginx-1.11.1/ \ 52 | 53 | EXPOSE 80 54 | CMD ["/usr/sbin/init"] 55 | -------------------------------------------------------------------------------- /c7-systemd-php7/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build -t c7-systemd-php7:latest . 3 | -------------------------------------------------------------------------------- /c7-systemd/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM centos:7 2 | MAINTAINER "yjc" 3 | ENV container docker 4 | RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ 5 | rm -f /lib/systemd/system/multi-user.target.wants/*;\ 6 | rm -f /etc/systemd/system/*.wants/*;\ 7 | rm -f /lib/systemd/system/local-fs.target.wants/*; \ 8 | rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ 9 | rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ 10 | rm -f /lib/systemd/system/basic.target.wants/*;\ 11 | rm -f /lib/systemd/system/anaconda.target.wants/*; 12 | VOLUME [ "/sys/fs/cgroup" ] 13 | CMD ["/usr/sbin/init"] -------------------------------------------------------------------------------- /c7-systemd/bulid.sh: -------------------------------------------------------------------------------- 1 | docker build --rm -t local/c7-systemd . 2 | -------------------------------------------------------------------------------- /centos/README.md: -------------------------------------------------------------------------------- 1 | # CentOS 2 | 3 | 仓库官网:https://hub.docker.com/_/centos/ 4 | 5 | https://github.com/docker-library/docs/tree/master/centos 6 | 7 | 获取: 8 | ``` 9 | docker pull centos 10 | docker pull daocloud.io/library/centos 11 | docker pull hub.c.163.com/library/centos 12 | ``` 13 | 14 | CentOS 是一个基于 RedHat Linux 提供的可自由使用源代码的企业级 Linux 发行版本。每个版本的 CentOS 都会获得十年的支持(通过安全更新方式)。 新版本的 CentOS 大约每两年发行一次,而每个版本的 CentOS 会定期(大概每六个月)更新一次,以便支持新的硬件。 这样,建立一个安全、低维护、稳定、高预测性、高重复性的 Linux 环境。 CentOS 是 Community Enterprise Operating System 的缩写。 15 | 16 | ### 支持的tag 17 | 18 | - [`latest`, `centos7`, `7` (*docker/Dockerfile*)](https://github.com/CentOS/sig-cloud-instance-images/blob/79db851f4016c283fb3d30f924031f5a866d51a1/docker/Dockerfile) 19 | - [`centos6`, `6` (*docker/Dockerfile*)](https://github.com/CentOS/sig-cloud-instance-images/blob/4ab2be41cc943b7d34e3c3ac15164b9d7706dce8/docker/Dockerfile) 20 | - [`centos7.4.1708`, `7.4.1708` (*docker/Dockerfile*)](https://github.com/CentOS/sig-cloud-instance-images/blob/66add29c188e42d4d855f4d4acdb2b73d547edb6/docker/Dockerfile) 21 | - [`centos7.3.1611`, `7.3.1611` (*docker/Dockerfile*)](https://github.com/CentOS/sig-cloud-instance-images/blob/5bbaef9f60ab9e3eeb61acec631c2d91f8714fff/docker/Dockerfile) 22 | - [`centos7.2.1511`, `7.2.1511` (*docker/Dockerfile*)](https://github.com/CentOS/sig-cloud-instance-images/blob/a3c59bd4e98a7f9c063d993955c8ec19c5b1ceff/docker/Dockerfile) 23 | - [`centos7.1.1503`, `7.1.1503` (*docker/Dockerfile*)](https://github.com/CentOS/sig-cloud-instance-images/blob/bc561dfdd671d612dbb9f92e7e17dd8009befc44/docker/Dockerfile) 24 | - [`centos7.0.1406`, `7.0.1406` (*docker/Dockerfile*)](https://github.com/CentOS/sig-cloud-instance-images/blob/f1d1e0bd83baef08e257da50e6fb446e4dd1b90c/docker/Dockerfile) 25 | - [`centos6.9`, `6.9` (*docker/Dockerfile*)](https://github.com/CentOS/sig-cloud-instance-images/blob/4f329fe087b0152df26344cecee9ba30b03b1a7b/docker/Dockerfile) 26 | - [`centos6.8`, `6.8` (*docker/Dockerfile*)](https://github.com/CentOS/sig-cloud-instance-images/blob/f32666d2af356ed6835942ed753a4970e18bca94/docker/Dockerfile) 27 | - [`centos6.7`, `6.7` (*docker/Dockerfile*)](https://github.com/CentOS/sig-cloud-instance-images/blob/d0b72df83f49da844f88aabebe3826372f675370/docker/Dockerfile) 28 | - [`centos6.6`, `6.6` (*docker/Dockerfile*)](https://github.com/CentOS/sig-cloud-instance-images/blob/8911843d9a6cc71aadd81e491f94618aded94f30/docker/Dockerfile) 29 | 30 | 31 | ### centos68 32 | 33 | 仓库地址:https://github.com/CentOS/sig-cloud-instance-images/tree/f32666d2af356ed6835942ed753a4970e18bca94/docker 34 | 35 | ### centos7 36 | 37 | 仓库地址:https://github.com/CentOS/sig-cloud-instance-images/tree/79db851f4016c283fb3d30f924031f5a866d51a1/docker 38 | 39 | ## 加速镜像 40 | 41 | ### daocloud.io 42 | 43 | https://www.daocloud.io/ 44 | 45 | 1. 在 terminal 中登录 docker login daocloud.io 46 | 2. 输入 docker pull 并复制粘贴以下镜像地址 47 | ``` 48 | daocloud.io/library/centos:latest 49 | daocloud.io/library/centos:centos6.6 50 | daocloud.io/library/centos:6.8 51 | daocloud.io/library/centos:7.1.1503 52 | daocloud.io/library/centos:7.2.1511 53 | ``` 54 | 55 | ### 网易 56 | 57 | https://c.163yun.com/hub 58 | 59 | ``` 60 | hub.c.163.com/library/centos:latest 61 | hub.c.163.com/library/centos:6.8 62 | hub.c.163.com/library/centos:7.2.1511 63 | ``` 64 | 65 | 网易修改版:(yum 源更换为网易源,并安装了常用软件 openssh-server、supervisor、vim、tar、wget、curl、rsync、bzip2、iptables、tcpdump、less、telnet、net-tools、lsof、sysstat、cron。) 66 | https://c.163yun.com/hub#/m/repository/?repoId=1055 67 | 68 | 69 | ### 阿里云 70 | 71 | https://dev.aliyun.com/search.html 72 | 73 | 需要登录使用。 74 | 75 | 76 | ## 如何使用这个镜像? 77 | 78 | ### 持续构建 79 | 80 | 标签daocloud.io/centos:latest总是指向了最新的可用版本。 81 | 82 | CentOS 项目会对所有活跃操作系统版本进行定期的更新,这些镜像会每月更新或者针对紧急情况立刻更新。这些持续构建的镜像只会打上主版本标签,比如: 83 | ``` 84 | docker pull daocloud.io/centos:6 85 | 86 | docker pull daocloud.io/centos:7 87 | ``` 88 | 89 | ### 小版本标签 90 | 91 | 除此之外,还会根据操作系统厂商提供的不同版本提供包括小版本的镜像。请注意,这些小版本的镜像一旦推出就不会更新了。 如果您选择这些镜像,强烈推荐您在 Dockerfile 里包括RUN yum -y update && yum clean all, 否则有可能会有安全隐患。 这些镜像的使用方式如下: 92 | ``` 93 | docker pull daocloud.io/centos:5.11 94 | ``` 95 | 96 | ## 包管理 97 | 98 | 默认情况下,为了减小镜像的尺寸,在构建 CentOS 镜像时用了yum的nodocs选项。 如果您安装一个包后发现文件缺失,请在/etc/yum.conf中注释掉tsflogs=nodocs并重新安装您的包。 99 | 100 | ## systemd 整合 101 | 102 | >仅针对CentOS7及以上。 103 | 104 | 当前,因为 systemd 要求 CAPSYSADMIN 权限,从而得到了读取主机 cgroup 的能力,CentOS7 中已经用 fakesystemd 代替了 systemd 来解决依赖问题。 如果您仍然希望使用 systemd,可用参考下面的 Dockerfile: 105 | ``` 106 | FROM daocloud.io/centos:7 107 | MAINTAINER "you" 108 | ENV container docker 109 | RUN yum -y swap -- remove fakesystemd -- install systemd systemd-libs 110 | RUN yum -y update; yum clean all; \ 111 | (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == 112 | systemd-tmpfiles-setup.service ] || rm -f $i; done); \ 113 | rm -f /lib/systemd/system/multi-user.target.wants/*;\ 114 | rm -f /etc/systemd/system/*.wants/*;\ 115 | rm -f /lib/systemd/system/local-fs.target.wants/*; \ 116 | rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ 117 | rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ 118 | rm -f /lib/systemd/system/basic.target.wants/*;\ 119 | rm -f /lib/systemd/system/anaconda.target.wants/*; 120 | VOLUME [ "/sys/fs/cgroup" ] 121 | CMD ["/usr/sbin/init"] 122 | ``` 123 | 124 | 上面这个Dockerfile首先删除了 fakesystemd 并且安装了 systemd。然后您就可以构建基础镜像了。 125 | ``` 126 | docker build --rm -t local/c7-systemd . 127 | ``` 128 | 129 | ### 一个包含 systemd 的应用容器示例 130 | 131 | 为了使用像上面那样包含 systemd 的容器,你需要创建一个类似下面的Dockerfile: 132 | ``` 133 | FROM local/c7-systemd 134 | RUN yum -y install httpd; yum clean all; systemctl enable httpd.service 135 | EXPOSE 80 136 | CMD ["/usr/sbin/init"] 137 | ``` 138 | 139 | 构建镜像: 140 | ``` 141 | docker build --rm -t local/c7-systemd-httpd 142 | ``` 143 | 144 | ### 运行一个包含 systemd 的应用容器 145 | 146 | 为了运行一个包含 systemd 的容器,您需要使用--privileged选项, 并且挂载主机的 cgroups 文件夹。 下面是运行包含 systemd 的 httpd 容器的示例命令: 147 | ``` 148 | docker run --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/c7-systemd-httpd 149 | ``` 150 | 151 | ## 支持的Docker版本 152 | 153 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 154 | 155 | -------------------------------------------------------------------------------- /dockerui/README.md: -------------------------------------------------------------------------------- 1 | # dockerui 2 | 3 | |[microbox/**dockerui**](https://registry.hub.docker.com/u/microbox/dockerui/)|16MB |`latest` `0.7.0` `0.5.0` `0.4.0`| 4 | 5 | ## 获取 6 | ``` 7 | docker pull microbox/dockerui:latest 8 | ``` 9 | 10 | ## 运行 11 | 12 | ``` 13 | docker run -d --restart=always -p 9009:9000 -v /var/run/docker.sock:/docker.sock microbox/dockerui:latest 14 | ``` 15 | 16 | Visit http://docker-ip:9009/ to see the WebUI for docker -------------------------------------------------------------------------------- /gitbook-build-template/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM daocloud.io/library/node:10.21.0-alpine3.11 2 | 3 | # https://dashboard.daocloud.io/packages/6564230d-84b5-4789-90f9-98c298ab071b 4 | # https://juejin.im/post/6866073251295002638 5 | WORKDIR /home/build/ 6 | COPY book.json . 7 | RUN npm install gitbook-cli -g --registry https://registry.npm.taobao.org/ && gitbook install 8 | EXPOSE 4000 9 | CMD ["gitbook", "serve"] 10 | -------------------------------------------------------------------------------- /gitbook-build-template/README.md: -------------------------------------------------------------------------------- 1 | 2 | # gitbook-build-template 3 | 4 | gitbook构建镜像,基于node:10.21.0-alpine3.11构建。生成的新镜像包含有gitbook命令。 5 | 6 | > gitbook已不再更新,使用最新版node会报错,推荐使用10.21.0版本。 7 | 8 | 使用该镜像编译markdown前无需执行`gitbook install`,因为已经内置了一份book.json配置,镜像本身已经执行过`gitbook install`了。适用于当前镜像book.json插件已经满足需求,不再需要增加插件的情况。 9 | 10 | > 使用时需要使用`WORKDIR`命令切换到指定路径:`/home/build`,原因是gitbook插件已经安装到该目录了。 11 | 12 | 本镜像附带的book.json插件对于大部分情况已经适用了,使用该镜像能大大加快Markdow文件编译速度。 13 | 14 | 15 | 镜像使用示例: 16 | ``` Dockerfile 17 | FROM node:10.21.0-alpine3.11-gitbook-build-template AS builder 18 | WORKDIR /home/build 19 | COPY . . 20 | RUN gitbook build 21 | 22 | FROM daocloud.io/library/nginx:1.13.0-alpine 23 | WORKDIR /usr/share/nginx/html 24 | COPY --from=builder /home/build/_book/ ./ 25 | # COPY --from=builder /home/build/conf/nginx.conf /etc/nginx/conf.d/default.conf 26 | EXPOSE 80 27 | ``` 28 | 29 | -------------------------------------------------------------------------------- /gitbook-build-template/book.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "GitBook", 3 | "description": "", 4 | "author": "yujiancai", 5 | "output.name": "site", 6 | "language": "zh-hans", 7 | "gitbook": "3.2.3", 8 | "root": ".", 9 | "structure": { 10 | "readme": "introduction.md" 11 | }, 12 | "links": { 13 | "sidebar": { 14 | "Home": "https://github.com/52fhy/" 15 | } 16 | }, 17 | "plugins": [ 18 | "-lunr", 19 | "-search", 20 | "anchors", 21 | "theme-comscore", 22 | "anchor-navigation-ex", 23 | "search-pro", 24 | "splitter", 25 | "expandable-chapters-small", 26 | "todo", 27 | "edit-link", 28 | "copy-code-button", 29 | "rss", 30 | "katex", 31 | "lightbox", 32 | "tbfed-pagefooter" 33 | ], 34 | "pluginsConfig": { 35 | "search-pro": { 36 | "cutWordLib": "nodejieba", 37 | "defineWord": ["gitbook-use"] 38 | }, 39 | "anchor-navigation-ex": { 40 | "isRewritePageTitle": true, 41 | "isShowTocTitleIcon": true, 42 | "tocLevel1Icon": "fa fa-hand-o-right", 43 | "tocLevel2Icon": "fa fa-hand-o-right", 44 | "tocLevel3Icon": "fa fa-hand-o-right" 45 | }, 46 | "theme-default": { 47 | "showLevel": false 48 | }, 49 | "edit-link": { 50 | "base": "https://github.com/52fhy/docker-images", 51 | "label": "Edit This Page" 52 | }, 53 | "tbfed-pagefooter": { 54 | "copyright":"Copyright © 52fhy.com", 55 | "modify_label": "该文件修订时间:", 56 | "modify_format": "YYYY-MM-DD HH:mm:ss" 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /gitbook-build-template/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build -t node:10.21.0-alpine3.11-gitbook-build-template . 3 | -------------------------------------------------------------------------------- /gitbook-build/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM daocloud.io/library/node:10.21.0-alpine3.11 2 | 3 | # https://dashboard.daocloud.io/packages/6564230d-84b5-4789-90f9-98c298ab071b 4 | # https://juejin.im/post/6866073251295002638 5 | 6 | RUN npm install gitbook-cli -g --registry https://registry.npm.taobao.org/ 7 | EXPOSE 4000 8 | CMD ["gitbook", "serve"] 9 | -------------------------------------------------------------------------------- /gitbook-build/README.md: -------------------------------------------------------------------------------- 1 | 2 | # gitbook-build 3 | 4 | 5 | gitbook构建镜像,基于node:10.21.0-alpine3.11构建。生成的新镜像包含有gitbook命令。 6 | 7 | > gitbook已不再更新,使用最新版node会报错,推荐使用10.21.0版本。 8 | 9 | 使用该镜像编译markdown前需执行`gitbook install`。 -------------------------------------------------------------------------------- /gitbook-build/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker build -t node:10.21.0-alpine3.11-gitbook-build . 3 | -------------------------------------------------------------------------------- /mysql/README.md: -------------------------------------------------------------------------------- 1 | # MySQL 2 | 3 | 仓库官网:https://hub.docker.com/_/mysql/ 4 | 5 | 获取: 6 | ``` 7 | docker pull mysql 8 | docker pull daocloud.io/library/mysql 9 | docker pull hub.c.163.com/library/mysql 10 | ``` 11 | 12 | 版本: 13 | 14 | - 5.7.4 (latest) 15 | - 5.7.5 16 | - 5.7.6 17 | - 8.0.2 18 | - 5.5.44 19 | - 5.6.17 20 | - 5.6.21 21 | - ... 22 | 23 | MySQL 由于其性能高、成本低、可靠性好,已经成为全球最流行的开源数据库软件,被广泛地被应用在 Internet 上的中小型网站中。随着 MySQL 的不断成熟,它也逐渐出现在更多大规模网站和应用上,比如 Facebook、Twitter 和 Yahoo! 等站点。 24 | 25 | ## 如何使用本镜像 26 | 27 | 28 | ### 启动一个 mysql 服务实例 29 | 30 | 启动一个 MySQL 实例非常简单: 31 | ``` 32 | $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:tag 33 | ``` 34 | 35 | 在上述命令中,some-mysql 指定了该容器的名字,my-secret-pw 指定了 root 用户的密码,tag 参数指定了你想要的 MySQL 版本。 36 | 37 | ### 从另外一个 Docker 容器连接 MySQL 服务 38 | 39 | 本镜像会暴露 MySQL 的标准端口 3306,你可以使用 link 功能来让其他应用容器能够访问 MySQL 容器,就像下面这样: 40 | ``` 41 | $ docker run --name some-app --link some-mysql:mysql -d app-that-uses-mysql 42 | ``` 43 | 44 | ### 使用 MySQL 命令行工具连接 MySQL 45 | 46 | 下面的命令启动了另一个 MySQL 容器并使用 MySQL 命令行工具访问你之前的 MySQL 服务,之后你就能向你的数据库执行 SQL 语句了: 47 | ``` 48 | $ docker run -it --link some-mysql:mysql --rm daocloud.io/mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"' 49 | ``` 50 | 51 | 在上述命令中 some-mysql 就是你原来 MySQL 服务容器的名字。 52 | 53 | 想要了解更多有关 MySQL 命令行工具的信息可以参考 MySQL 官方文档:http://dev.mysql.com/doc/en/mysql.html。 54 | 55 | ### 查看 MySQL 日志 56 | 57 | docker exec 命令能让你在一个容器中额外地运行新命令。比如你可以执行下面的命令来获得一个 bash shell: 58 | ``` 59 | $ docker exec -it some-mysql bash 60 | ``` 61 | 62 | 你可以通过查看 Docker 容器的日志获得 MySQL 服务的日志: 63 | ``` 64 | $ docker logs some-mysql 65 | ``` 66 | 67 | ### 使用自定义 MySQL 配置文件 68 | 69 | 当 MySQL 服务启动时会以 /etc/mysql/my.cnf 为配置文件,本文件会导入 /etc/mysql/conf.d 目录中所有以 .cnf 为后缀的文件。这些文件会拓展或覆盖 /etc/mysql/my.cnf 文件中的配置。因此你可以创建你自己需要的配置文件并挂载至 MySQL 容器中的 /etc/mysql/conf.d 目录。 70 | 71 | 假设 /my/custom/config-file.cnf 是你自定义的配置文件,你可以像这样启动一个 MySQL 容器(注意这里直接挂载了配置文件的目录): 72 | ``` 73 | $ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:tag 74 | ``` 75 | 76 | 这会启动一个名为 some-mysql 且同时加载了 /etc/mysql/my.cnf 和 /etc/mysql/conf.d/config-file.cnf 这两个配置文件的新容器,注意这时以后者的配置优先。 77 | 78 | SELinux 用户在这里可能会遇到一个问题,目前的解决方法是为你的配置文件指定相关的 SELinux 策略配置,那样容器才可以访问它: 79 | ``` 80 | $ chcon -Rt svirt_sandbox_file_t /my/custom 81 | ``` 82 | 83 | ## 环境变量 84 | 85 | 当你启动 mysql 镜像时,你可以通过 docker run 命令传递几个特定的环境变量来调整相关设置,特别注意当容器启动时,所有环境变量都不会影响一个容器中已存在的数据库内容。 86 | 87 | ### MYSQL_ROOT_PASSWORD 88 | 89 | 本变量必填,它指定了 MySQL root 的用户的密码。在刚才的例子中,该密码被设置为 my-secret-pw。 90 | 91 | ### MYSQL_DATABASE 92 | 93 | 本变量可选,通过该变量当 MySQL 启动时会创建一个由你指定的数据库。如果你另外又提供了一对用户名和密码(见下方),那么他将会被授予本数据库的所有权限。 94 | 95 | ### MYSQL_USER, MYSQL_PASSWORD 96 | 97 | 这两个变量可选,同时使用的话会创建一个新用户并设置相应的密码,该用户会被授予由 MYSQL_DATABASE 变量指定的数据库的所有权限(见上方)。只有当同时提供了这两个变量时该用户才会被创建。 98 | 99 | 特别注意没有必要使用这个机制来创建 root 用户,root 用户的密码会被设置为 MYSQL_ROOT_PASSWORD 变量的值。 100 | 101 | ### MYSQL_ALLOW_EMPTY_PASSWORD 102 | 103 | 本变量可选,当其被设置为 yes 时将会允许当前容器中的 root 用户能够使用空密码。注意:绝对不建议将该变量设置为 yes,除非你知道自己在做什么。如果这么做的话你的 MySQL 服务将会失去保护,所有人都可以以超级用户的身份访问该 MySQL 服务。 104 | 105 | ## 重要说明 106 | 107 | ### 储存数据的位置 108 | 109 | 摘要:下面介绍了多种储存 Docker 容器中数据的方式,我们鼓励 mysql 镜像用户熟悉下面各项技术: 110 | 111 | - 使用 Docker 自带的 [Volume 机制](https://docs.docker.com/userguide/dockervolumes/#adding-a-data-volume)将数据库文件写入宿主机的磁盘。这是默认的方式,对用户来讲简单且透明。缺点是宿主机上的工具或应用可能难以定位这些文件。 112 | - 在宿主机上创建一个数据目录(在容器外部)并把他挂载至容器内部。此时数据库文件被放置在宿主机上一个已知的目录里,那样容器外部的应用和工具就可以方便地访问这些文件。缺点是用户需要确保这些目录存在,且宿主机上正确配置了权限设置。 113 | 114 | 阅读 Docker 文档能快速了解不同的储存选项,并且有很多博客或论坛讨论并给出了这方面的建议。我们会在下面简单地演示一下: 115 | 116 | 1) 在宿主机上创建一个数据目录,例:/my/own/datadir。 117 | 2) 使用下面的命令启动 mysql 容器: 118 | ``` 119 | $ docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:tag 120 | ``` 121 | 122 | 我们通过 -v /my/own/datadir:/var/lib/mysql 参数从宿主机挂载 /my/own/datadir 目录至容器内作为 /var/lib/mysql 目录,那样 MySQL 就会默认将数据文件写入这个目录中。 123 | 124 | 注意 SELinux 用户可能会遇到一个问题,目前的解决方法是为你的数据目录指定相关的 SELinux 策略配置,那样容器才可以访问它: 125 | ``` 126 | $ chcon -Rt svirt_sandbox_file_t /my/own/datadir 127 | ``` 128 | 129 | ### MySQL 初始化完成前无连接 130 | 131 | 如果容器启动时没有任何数据库被初始化,那么就会创建一个默认的数据库。这是一个预料中的行为,它意味着除非初始化完成,否则 MySQL 不会接受任何连接。当你使用 docker-compose 等自动化工具同时启动一系列容器时,可能会因为这个特性而造成一些问题。 132 | 133 | ### 使用已存在的数据库 134 | 135 | 如果从一个已存在数据库文件的目录上启动一个 mysql 容器的话(特别是一个 mysql 子目录),那么 $MYSQL_ROOT_PASSWORD 变量应该在启动命令中略去;即使设置了也会被忽略,已存在的数据库不会以任何方式被改变。 136 | 137 | -------------------------------------------------------------------------------- /nginx/README.md: -------------------------------------------------------------------------------- 1 | # Nginx 2 | 3 | 仓库官网:https://registry.hub.docker.com/_/nginx/ 4 | 5 | 获取: 6 | ``` 7 | docker pull nginx 8 | docker pull daocloud.io/library/nginx 9 | docker pull hub.c.163.com/library/nginx 10 | ``` 11 | 12 | 版本: 13 | 14 | - latest 15 | - alpine 16 | - 1.13.0-alpine 17 | - 1.12.2 18 | - 1.12.2-alpine 19 | - 1.7.10 20 | - 1.7.9 21 | - 1.13.2-perl 22 | - ... 23 | 24 | 25 | ## 什么是 Nginx? 26 | 27 | Nginx 是一款轻量级的 Web 服务器、反向代理服务器、及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行。由俄罗斯的程序设计师 Igor Sysoev 所开发,供俄国大型的入口网站及搜索引擎 Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 Nginx 网站用户有:新浪、网易、腾讯等。 28 | 29 | ## 如何使用这个镜像? 30 | 31 | ### 托管静态网页内容 32 | ``` 33 | docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d daocloud.io/nginx 34 | ``` 35 | 另外一种比上面绑定 volume 更推荐的做法是用Dockerfile生成包含网页内容的新镜像,如下所示: 36 | ``` 37 | FROM daocloud.io/nginx 38 | COPY static-html-directory /usr/share/nginx/html 39 | ``` 40 | 把上面的Dockerfile和您的网页内容(static-html-directory)放在同一目录下,然后运行命令生成新镜像: 41 | ``` 42 | docker build -t some-content-nginx . 43 | ``` 44 | 最后启动容器: 45 | ``` 46 | docker run --name some-nginx -d some-content-nginx 47 | ``` 48 | 49 | ### 暴露端口 50 | ``` 51 | docker run --name some-nginx -d -p 8080:80 some-content-nginx 52 | ``` 53 | 54 | 这样启动,您就可以通过 http://localhost:8080 或者 http://宿主 IP:8080 访问 Nginx 了。 55 | 56 | ### 进阶配置 57 | ``` 58 | docker run --name some-nginx -v /some/nginx.conf:/etc/nginx/nginx.conf:ro -d daocloud.io/nginx 59 | ``` 60 | 61 | >了解详细的 Nginx 配置文件语法,请参考:官方文档:http://nginx.org/en/docs/。 62 | 63 | 为了确保 Nginx 容器能够持续运行,请务必在您自定义的 Nginx 配置文件中包含deamon off配置项。 64 | 65 | 下面的命令从一个正在运行的 Nginx 容器中复制出配置文件: 66 | ``` 67 | docker cp some-nginx:/etc/nginx/nginx.conf /some/nginx.conf 68 | ``` 69 | 您也可以通过推荐的Dockerfile方式来生成一个包含自定义配置文件的镜像,如下所示: 70 | ``` 71 | FROM daocloud.io/nginx 72 | COPY nginx.conf /etc/nginx/nginx.conf 73 | ``` 74 | 再用下面的命令构建镜像: 75 | ``` 76 | docker build -t some-custom-nginx . 77 | ``` 78 | 最后启动容器: 79 | ``` 80 | docker run --name some-nginx -d some-custom-nginx 81 | ``` 82 | 支持的Docker版本 83 | 84 | 这个镜像在 Docker 1.7.0 上提供最佳的官方支持,对于其他老版本的 Docker(1.0 之后)也能提供基本的兼容。 -------------------------------------------------------------------------------- /php56-fpm-centos68-gccext/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php56-fpm-centos68 2 | 3 | MAINTAINER yjc@52fhy.com 4 | 5 | # php 6 | ENV PHP_VERSION 5.6.33 7 | ENV PHP_URL="http://cn2.php.net/distributions/php-${PHP_VERSION}.tar.bz2" 8 | 9 | # nginx 10 | ENV NGINX_VERSION 1.12.2 11 | ENV PHALCON_VERSION 3.3.1 12 | ENV XHPROF_VERSION 4.1.5 13 | 14 | RUN yum -y install git 15 | 16 | # php-ext 17 | RUN pecl install memcache protobuf mongodb seaslog 18 | 19 | # install phalcon ext 20 | # wget https://github.com/phalcon/cphalcon/archive/v${PHALCON_VERSION}.tar.gz 21 | # git clone --depth=1 "git://github.com/phalcon/cphalcon.git" && cd cphalcon/build && ./install 22 | COPY cphalcon-${PHALCON_VERSION}.tar.gz /cphalcon-${PHALCON_VERSION}.tar.gz 23 | RUN tar xzf /cphalcon-${PHALCON_VERSION}.tar.gz && cd cphalcon-${PHALCON_VERSION}/build && ./install 24 | 25 | # install xhprof_tideways ext 26 | RUN wget https://github.com/tideways/php-xhprof-extension/archive/v${XHPROF_VERSION}.tar.gz -O php-xhprof-extension-${XHPROF_VERSION}.tar.gz && tar xzf /php-xhprof-extension-${XHPROF_VERSION}.tar.gz && cd php-xhprof-extension-${XHPROF_VERSION} && phpize && ./configure && make && make install 27 | 28 | # install gearmand 29 | RUN yum install boost-devel gperf libevent libevent-devel mysql-devel libuuid-devel -y && \ 30 | wget https://github.com/gearman/gearmand/releases/download/1.1.18/gearmand-1.1.18.tar.gz && \ 31 | tar zxvf gearmand-1.1.18.tar.gz && cd gearmand-1.1.18 && \ 32 | ./configure && make && make install 33 | 34 | # install gearman ext 35 | RUN pecl install gearman 36 | 37 | # install yac ext 38 | RUN wget http://pecl.php.net/get/yac-0.9.2.tgz && tar xvf yac-0.9.2.tgz && cd yac-0.9.2 && phpize && ./configure && make && make install 39 | 40 | # install yaconf ext: not support php5 41 | # RUN wget http://pecl.php.net/get/yaconf-1.0.4.tgz && tar xvf yaconf-1.0.4.tgz && cd yaconf-1.0.4 && phpize && ./configure && make && make install 42 | 43 | # install msgpack ext 44 | RUN wget http://pecl.php.net/get/msgpack-0.5.7.tgz && tar xvf msgpack-0.5.7.tgz && cd msgpack-0.5.7 && phpize && ./configure && make && make install 45 | 46 | # install libevent ext 47 | RUN wget http://pecl.php.net/get/libevent-0.1.0.tgz && tar xvf libevent-0.1.0.tgz && cd libevent-0.1.0 && phpize && ./configure && make && make install 48 | 49 | RUN echo "extension=msgpack.so" >> "$PHP_INI_FILE" && \ 50 | echo "extension=protobuf.so" >> "$PHP_INI_FILE" && \ 51 | echo "extension=yac.so" >> "$PHP_INI_FILE" && \ 52 | echo "extension=mongodb.so" >> "$PHP_INI_FILE" && \ 53 | echo "extension=seaslog.so" >> "$PHP_INI_FILE" && \ 54 | echo "extension=phalcon.so" >> "$PHP_INI_FILE" && \ 55 | echo "extension=tideways.so" >> "$PHP_INI_FILE" && \ 56 | echo "extension=libevent.so" >> "$PHP_INI_FILE" && \ 57 | echo "extension=gearman.so" >> "$PHP_INI_FILE" 58 | 59 | ADD ./run.sh /run.sh 60 | RUN chmod 755 /run.sh 61 | 62 | CMD /run.sh && tail -f 63 | 64 | EXPOSE 80 65 | EXPOSE 9000 66 | 67 | #docker build -t php56-fpm-centos68-gccext . 68 | 69 | -------------------------------------------------------------------------------- /php56-fpm-centos68-gccext/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | nginx 3 | /usr/local/php/sbin/php-fpm 4 | ps -ef 5 | tail -f /usr/local/nginx/logs/access.log -------------------------------------------------------------------------------- /php56-fpm-centos68-withext/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php56-fpm-centos68 2 | 3 | MAINTAINER yjc@52fhy.com 4 | 5 | # RUN yum -y install git 6 | 7 | ADD libgearman.tar.gz /usr/local/lib/ 8 | RUN ln -s /usr/local/lib/libgearman.so.8.0.0 /usr/local/lib/libgearman.so && \ 9 | ln -s /usr/local/lib/libgearman.so.8.0.0 /usr/local/lib/libgearman.so.8 10 | ADD ext.tar.gz /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226 11 | 12 | # php-ext 13 | RUN echo "extension=msgpack.so" >> "$PHP_INI_FILE" && \ 14 | echo "extension=protobuf.so" >> "$PHP_INI_FILE" && \ 15 | echo "extension=yac.so" >> "$PHP_INI_FILE" && \ 16 | echo "extension=mongodb.so" >> "$PHP_INI_FILE" && \ 17 | echo "extension=seaslog.so" >> "$PHP_INI_FILE" && \ 18 | echo "extension=phalcon.so" >> "$PHP_INI_FILE" && \ 19 | echo "extension=tideways.so" >> "$PHP_INI_FILE" && \ 20 | echo "extension=gearman.so" >> "$PHP_INI_FILE" 21 | 22 | #RUN yum -y install libevent-devel && echo "extension=libevent.so" >> "$PHP_INI_FILE" 23 | 24 | ADD ./run.sh /run.sh 25 | RUN chmod +x /run.sh 26 | 27 | EXPOSE 80 28 | EXPOSE 9000 29 | 30 | CMD ["/run.sh"] 31 | 32 | #docker build -t php56-fpm-centos68-withext . 33 | 34 | -------------------------------------------------------------------------------- /php56-fpm-centos68-withext/README.md: -------------------------------------------------------------------------------- 1 | 2 | # php56-fpm-centos68-withext 3 | 4 | 基于自行编译的 php56-fpm-centos68 镜像,父镜像是 centos:6.8。 5 | 6 | 与php56-fpm-centos68-gccext功能一样,只是PHP扩展部分采用直接将php56-fpm-centos68-gccext镜像编译好的so文件复制到镜像内,而省去了编译的过程,且节约了空间。 7 | 8 | 包含: 9 | 10 | - CentOS 6.8 11 | - PHP 5.6.33 12 | - php-fpm 13 | - Nginx 1.12.2 14 | - Redis 3.2.6 15 | 16 | 包含的PHP附加扩展: 17 | 18 | - swoole 1.10.1 19 | - phpredis 3.0.0 20 | - yar 2.0.2 21 | - yac 0.9.2 22 | - phalcon 3.3.1 23 | - xhprof_tideways 4.1.5 24 | - msgpack 0.5.7 25 | - protobuf 26 | - mongodb 27 | - seaslog 28 | - gearman 1.1.18 29 | 30 | 相关目录: 31 | 32 | - php根目录:/usr/local/php/ 33 | - php可执行程序目录:/usr/local/php/bin/、/usr/local/php/sbin/ 34 | - php配置目录:/usr/local/php/etc/ 35 | - nginx根目录:/usr/local/nginx/ 36 | - nginx可执行程序目录:/usr/local/nginx/sbin/ 37 | - nginx配置目录:/usr/local/nginx/conf/ 38 | 39 | 其中gearman依赖libgearman.so库,需要把该库文件复制到`/usr/local/lib/`。 40 | 41 | ## 如何使用 42 | 43 | 1、首次使用需要先编译成镜像: 44 | 45 | ``` bash 46 | docker build -t php56-fpm-centos68-phalcon-withext . 47 | ``` 48 | 或者执行bulid.sh。 49 | 50 | 编译需要30分钟左右。实际视机器性能而定。 51 | 52 | >注:因为父镜像是[`php56-fpm-centos68`](https://github.com/52fhy/docker-images/tree/master/php56-fpm-centos68)故需要先编译生成该镜像。已存在则忽略。 53 | 54 | 也可以下载打包好的镜像文件 php56-fpm-centos68-withext.tar.gz (209M,链接: https://pan.baidu.com/s/1o9AY58Q 密码: kzjw),然后: 55 | ``` 56 | docker load --input php56-fpm-centos68-withext.tar.gz 57 | ``` 58 | 59 | 或者: 60 | ``` 61 | docker pull hub.c.163.com/jiancaigege/php56-fpm-centos68-withext 62 | ``` 63 | 64 | 2、编译完成后可以创建容器了。默认会自动启动Nginx、php-fpm服务: 65 | 66 | ``` bash 67 | docker run -d --name yphp -p 80:80 -p 9000:9000 -v /work/:/work/ php56-fpm-centos68 68 | docker ps 69 | ``` 70 | 71 | 其中`-v /work/:/work/`指定将本机的`/work`目录挂载到容器内的`/work`目录。建议挂载。本机的`/work`目录必须存在。 72 | 73 | `docker ps`看到的内容: 74 | 75 | ``` 76 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 77 | db13127cb76b php56-fpm-centos68 "/run.sh" 1 second ago Up 1 second 0.0.0.0:80->80/tcp, 0.0.0.0:9000->9000/tcp yphp 78 | ``` 79 | 表名容器正则运行。如果`STATUS`是Exit(1)则说明容器异常退出,如果Exit(0)说明容器只执行了命令就立即退出了。 80 | 可以使用`docker logs db13127cb76b` 查看容器具体退出情况。db13127cb76b是某个容器ID(CONTAINER ID)。 81 | 如果是Exit(0)可能是没有维持住后台运行,建议在命令加入`tail -f`这种可以一直运行的命令。 82 | 83 | 3、如果想自行配置php.ini、nginx.conf,可以将配置目录映射到宿主机: 84 | ``` bash 85 | docker run -d --name yphp -p 80:80 -p 9000:9000 \ 86 | -v /work/:/work/ \ 87 | -v "/work/yphp/php/etc/":/usr/local/php/etc/ \ 88 | -v "/work/yphp/nginx/conf/":/usr/local/nginx/conf/ \ 89 | -v "/work/yphp/nginx/logs/":/usr/local/nginx/logs/ \ 90 | php56-fpm-centos68 91 | ``` 92 | 93 | 其中`/work/yphp`是本地宿主机的一个目录,里面包含php和nginx的配置,目录结构: 94 | ``` 95 | /work/yphp/ 96 | |--nginx 97 | |--conf 98 | |--nginx.conf 99 | |--vhost 100 | |--php 101 | |--etc 102 | |--php.ini 103 | |--php-fpm.d 104 | |--www.conf 105 | ``` 106 | 如果不想对每个配置都进行映射,也可以指定需要映射的配置文件: 107 | ```bash 108 | docker run -d --name yphp -p 80:80 -p 9000:9000 \ 109 | -v /work/:/work/ \ 110 | -v "/work/yphp/php/etc/php.ini":/usr/local/php/etc/php.ini \ 111 | -v "/work/yphp/nginx/conf/nginx.conf":/usr/local/nginx/conf/nginx.conf \ 112 | -v "/work/yphp/nginx/conf/vhost/":/usr/local/nginx/conf/vhost/ \ 113 | -v "/work/yphp/nginx/logs/":/usr/local/nginx/logs/ \ 114 | php56-fpm-centos68 115 | ``` 116 | 117 | >注意:由于这里覆盖了php.ini,所以想要开启第三方扩展的话,想要提前在php.ini里追加: 118 | ``` 119 | extension=redis.so 120 | extension=swoole.so 121 | extension=yar.so 122 | extension=yac.so 123 | extension=phalcon.so 124 | extension=seaslog.so 125 | extension=gearman.so 126 | extension=mongodb.so 127 | extension=tideways.so 128 | extension=protobuf.so 129 | extension=msgpack.so 130 | ``` 131 | 132 | 或者启动后追加然后重启容器里的php-fpm: 133 | ``` bash 134 | docker exec 容器ID killall php-fpm 135 | docker exec 容器ID php-fpm 136 | ``` 137 | 138 | 4、如果不需要一开始就运行服务,想进入容器自行启动,可以直接进入容器: 139 | ``` bash 140 | docker run -it --name yphp -v /work/:/work/ php56-fpm-centos68 /bin/bash 141 | ``` 142 | 143 | 退出容器使用exit。 144 | 145 | 5、想对当前容器打包为镜像,方便后续使用:(需要先停止容器) 146 | ``` bash 147 | # 从容器生成镜像 148 | # -m 加一些改动信息,-a 指定作者相关信息,db13127cb76b这一串为容器id,再后面为新镜像的名字 149 | docker commit -m "create images" -a "52fhy" db13127cb76b php56-fpm-centos68:yphp_v1 150 | 151 | # 导出镜像 152 | docker save -o yphp.tar php56-fpm-centos68:yphp_v1 153 | 154 | # 导入镜像 155 | docker load --input yphp.tar 156 | ``` 157 | 158 | 导出的镜像可以压缩以节约空间。 159 | 160 | 6、增加PHP扩展 161 | 162 | 有下面几种方法,只要编译出了.so文件就简单了。以演示xdebug为例: 163 | 164 | 1) 如果已经编译好了.so文件,直接复制到挂载目录(例如`/work`)。使用`docker exec -it 容器ID /bin/bash`进入容器,通过`php-config`可以看到扩展所在目录,复制到该目录,修改php.ini,追加`zend_extension=xdebug.so`,重启php-fpm即可。 165 | 166 | >注:一般扩展都是`extension=xxx.so`,xdebug特殊。 167 | 168 | 2) 需要先进入容器,使用`pecl install xdebug`自动编译生成.so文件。会自动复制到扩展目录。修改php.ini重启php-fpm生效。 169 | 170 | 3) pecl如果提示找不到该扩展,则使用源码编译。例如: 171 | ``` bash 172 | git clone https://github.com/xdebug/xdebug.git 173 | cd xdebug/ 174 | git checkout xdebug_2_5 175 | phpize 176 | ./configure 177 | make 178 | make install 179 | ``` 180 | 181 | >注:php5.6只能使用2.5及以下版本xdebug。 182 | 183 | 一般可以在pecl.php.net找到源码。例如:http://pecl.php.net/package/xdebug 。编译方法差不多: 184 | ``` bash 185 | wget http://pecl.php.net/get/xdebug-2.5.5.tgz \ 186 | && tar xzf xdebug-2.5.5.tgz && cd xdebug-2.5.5/ \ 187 | && phpize \ 188 | && ./configure \ 189 | && make && make install 190 | ``` 191 | 192 | 193 | 194 | 195 | 196 | 197 | -------------------------------------------------------------------------------- /php56-fpm-centos68-withext/ext.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php56-fpm-centos68-withext/ext.tar.gz -------------------------------------------------------------------------------- /php56-fpm-centos68-withext/libgearman.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php56-fpm-centos68-withext/libgearman.tar.gz -------------------------------------------------------------------------------- /php56-fpm-centos68-withext/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | nginx 3 | /usr/local/php/sbin/php-fpm 4 | ps -ef 5 | tail -f /usr/local/nginx/logs/access.log -------------------------------------------------------------------------------- /php56-fpm-centos68-withext/xdebug.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php56-fpm-centos68-withext/xdebug.so -------------------------------------------------------------------------------- /php56-fpm-centos68-withext/yaf.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php56-fpm-centos68-withext/yaf.so -------------------------------------------------------------------------------- /php56-fpm-centos68/Dockerfile: -------------------------------------------------------------------------------- 1 | #FROM centos:centos6.8 2 | FROM daocloud.io/centos:6.8 3 | 4 | MAINTAINER yjc@52fhy.com 5 | 6 | # php 7 | ENV PHP_VERSION 5.6.33 8 | ENV PHP_URL="http://cn2.php.net/distributions/php-${PHP_VERSION}.tar.bz2" 9 | 10 | # nginx 11 | ENV NGINX_VERSION 1.12.2 12 | 13 | # redis 14 | ENV REDIS_VER 3.2.6 15 | 16 | # php-ext 17 | ENV SWOOLE_VER 1.10.1 18 | # https://github.com/swoole/swoole-src/archive/v1.10.1.tar.gz 19 | 20 | ENV PHPREDIS_VER 3.1.2 21 | ENV PHP_INI_FILE="/usr/local/php/etc/php.ini" 22 | 23 | COPY libmcrypt-2.5.8.tar.gz /libmcrypt-2.5.8.tar.gz 24 | COPY mcrypt-2.6.8.tar.gz /mcrypt-2.6.8.tar.gz 25 | COPY mhash-0.9.9.9.tar.gz /mhash-0.9.9.9.tar.gz 26 | 27 | COPY nginx-${NGINX_VERSION}.tar.gz /nginx-${NGINX_VERSION}.tar.gz 28 | 29 | COPY swoole-src-${SWOOLE_VER}.tar.gz /${SWOOLE_VER}.tar.gz 30 | 31 | 32 | COPY redis-${REDIS_VER}.tar.gz /redis-${REDIS_VER}.tar.gz 33 | COPY phpredis-${PHPREDIS_VER}.tar.gz /phpredis-${PHPREDIS_VER}.tar.gz 34 | COPY yar-${YAR_VER}.tgz /yar-${YAR_VER}.tgz 35 | 36 | ENV TZ=Asia/Shanghai 37 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 38 | 39 | RUN yum install -y gcc gcc-c++ bison autoconf wget lrzsz \ 40 | && yum install -y make cmake libtool libtool-ltdl-devel \ 41 | && yum install -y libjpeg-devel libpng-devel freetype-devel gd-devel \ 42 | && yum install -y python-devel patch \ 43 | && yum install -y openssl openssl-devel ncurses-devel \ 44 | && yum install -y bzip2 bzip2-devel.x86_64 unzip zlib-devel \ 45 | && yum install -y libxml2 libxml2-devel \ 46 | && yum install -y curl-devel \ 47 | && yum install -y readline-devel \ 48 | && yum install -y pcre-devel \ 49 | && yum clean all 50 | 51 | # RUN wget -O /libmcrypt-2.5.8.tar.gz ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz \ 52 | RUN tar zxvf /libmcrypt-2.5.8.tar.gz \ 53 | && cd /libmcrypt-2.5.8 && ./configure && make && make install && cd - / && rm -rf /libmcrypt* \ 54 | && tar zxvf /mhash-0.9.9.9.tar.gz && cd mhash-0.9.9.9 && ./configure && make && make install && cd - / && rm -rf /mhash* \ 55 | && tar zxvf /mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8 && LD_LIBRARY_PATH=/usr/local/lib ./configure && make && make install && cd - / && rm -rf /mcrypt* 56 | 57 | # install php 58 | RUN wget -O /php-${PHP_VERSION}.tar.bz2 "$PHP_URL" \ 59 | && tar jxvf /php-${PHP_VERSION}.tar.bz2 && cd php-${PHP_VERSION}/ \ 60 | && ./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --enable-inline-optimization --enable-opcache --enable-session --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pdo-sqlite --with-sqlite3 --with-gettext --enable-mbregex --enable-mbstring --enable-xml --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-xmlrpc --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-curlwrappers --with-zlib --enable-zip --with-bz2 --with-gd --enable-gd-native-ttf --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-readline \ 61 | && make && make install \ 62 | && cp php.ini-production php.ini \ 63 | && cp php.ini* /usr/local/php/etc/ \ 64 | && cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf \ 65 | && make clean && yum clean all && cd - && rm -rf /php-${PHP_VERSION}* \ 66 | && ln -sf /usr/local/php/bin/* /usr/bin/ \ 67 | && ln -sf /usr/local/php/sbin/* /usr/bin/ \ 68 | && sed -i "s/;date.timezone =/date.timezone =PRC/" /usr/local/php/etc/php.ini 69 | 70 | RUN useradd www 71 | 72 | #RUN wget -O /nginx-${NGINX_VERSION}.tar.gz http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \ 73 | RUN echo 'install nginx' \ 74 | && tar zxvf /nginx-${NGINX_VERSION}.tar.gz && cd nginx-${NGINX_VERSION} \ 75 | && ./configure \ 76 | --prefix=/usr/local/nginx \ 77 | --with-http_stub_status_module \ 78 | --with-http_ssl_module \ 79 | --with-http_realip_module \ 80 | --with-http_sub_module \ 81 | --with-http_gzip_static_module \ 82 | --with-pcre \ 83 | && make && make install \ 84 | && ln -sf /usr/local/nginx/sbin/nginx /usr/bin \ 85 | && make clean && yum clean all \ 86 | && cd ../ && rm -rf nginx-${NGINX_VERSION}* 87 | 88 | RUN /usr/local/php/bin/pecl install redis swoole-1.10.2 yar-1.2.5 xdebug-2.5.5 && \ 89 | echo "extension=swoole.so" >> "$PHP_INI_FILE" && \ 90 | echo "extension=redis.so" >> "$PHP_INI_FILE" && 91 | echo "zend_extension=xdebug.so" >> "$PHP_INI_FILE" && 92 | echo "extension=yar.so" >> "$PHP_INI_FILE" 93 | 94 | # can not install by pecl:https://github.com/laruence/yaf/issues/266 95 | RUN echo 'install yaf' \ 96 | && wget http://pecl.php.net/get/yaf-2.3.5.tgz \ 97 | && tar xzf yaf-2.3.5.tgz && cd yaf-2.3.5/ \ 98 | && phpize \ 99 | && ./configure \ 100 | && make && make install \ 101 | && echo "extension=yaf.so" >> "$PHP_INI_FILE" \ 102 | && cd ../ && rm -rf yaf-2.3.5* 103 | 104 | #RUN wget http://download.redis.io/releases/redis-${REDIS_VER}.tar.gz -O /redis-${REDIS_VER}.tar.gz \ 105 | RUN echo 'install redis' \ 106 | && tar xzf /redis-${REDIS_VER}.tar.gz && cd redis-${REDIS_VER} \ 107 | && make \ 108 | && mkdir /usr/local/redis \ 109 | && cp redis.conf /usr/local/redis/ \ 110 | && cd src && cp redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis \ 111 | && cd / && rm -rf redis-${REDIS_VER}* 112 | 113 | ADD ./run.sh /run.sh 114 | RUN chmod 755 /run.sh 115 | 116 | CMD /run.sh && tail -f 117 | 118 | EXPOSE 80 119 | EXPOSE 9000 120 | 121 | #docker build -t php56-fpm-centos68 . 122 | 123 | -------------------------------------------------------------------------------- /php56-fpm-centos68/Dockerfile_online: -------------------------------------------------------------------------------- 1 | #FROM centos:centos6.8 2 | FROM daocloud.io/centos:6.8 3 | 4 | MAINTAINER yjc@52fhy.com 5 | 6 | # php 7 | ENV PHP_VERSION 5.6.33 8 | ENV PHP_URL="http://cn2.php.net/distributions/php-${PHP_VERSION}.tar.bz2" 9 | 10 | # nginx 11 | ENV NGINX_VERSION 1.12.2 12 | 13 | # redis 14 | ENV REDIS_VER 3.2.6 15 | 16 | # php-ext 17 | ENV SWOOLE_VER 1.10.1 18 | # https://github.com/swoole/swoole-src/archive/v1.10.1.tar.gz 19 | 20 | ENV PHPREDIS_VER 3.1.2 21 | # php5 need yar < 2.0 22 | ENV YAR_VER 1.2.5 23 | ENV PHP_INI_FILE="/usr/local/php/etc/php.ini" 24 | 25 | ENV TZ=Asia/Shanghai 26 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 27 | 28 | RUN yum install -y gcc gcc-c++ bison autoconf wget lrzsz \ 29 | && yum install -y make cmake libtool libtool-ltdl-devel \ 30 | && yum install -y libjpeg-devel libpng-devel freetype-devel gd-devel \ 31 | && yum install -y python-devel patch \ 32 | && yum install -y openssl openssl-devel ncurses-devel \ 33 | && yum install -y bzip2 bzip2-devel.x86_64 unzip zlib-devel \ 34 | && yum install -y libxml2 libxml2-devel \ 35 | && yum install -y curl-devel \ 36 | && yum install -y readline-devel \ 37 | && yum install -y pcre-devel \ 38 | && yum clean all 39 | 40 | RUN wget -O /libmcrypt-2.5.7.tar.gz ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz \ 41 | && wget -O /mcrypt-2.6.8.tar.gz https://jaist.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz \ 42 | && wget -O /mhash-0.9.9.9.tar.gz https://jaist.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz \ 43 | && tar zxvf /libmcrypt-2.5.7.tar.gz && cd /libmcrypt-2.5.7 && ./configure && make && make install && cd - / && rm -rf /libmcrypt* \ 44 | && tar zxvf /mhash-0.9.9.9.tar.gz && cd mhash-0.9.9.9 && ./configure && make && make install && cd - / && rm -rf /mhash* \ 45 | && tar zxvf /mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8 && LD_LIBRARY_PATH=/usr/local/lib ./configure && make && make install && cd - / && rm -rf /mcrypt* 46 | 47 | RUN wget -O /php-${PHP_VERSION}.tar.bz2 "$PHP_URL" \ 48 | && tar jxvf /php-${PHP_VERSION}.tar.bz2 && cd php-${PHP_VERSION}/ \ 49 | && ./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --enable-inline-optimization --enable-opcache --enable-session --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pdo-sqlite --with-sqlite3 --with-gettext --enable-mbregex --enable-mbstring --enable-xml --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-xmlrpc --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-curlwrappers --with-zlib --enable-zip --with-bz2 --with-gd --enable-gd-native-ttf --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-readline \ 50 | && make && make install \ 51 | && cp php.ini-production php.ini \ 52 | && cp php.ini* /usr/local/php/etc/ \ 53 | && cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf \ 54 | && make clean && yum clean all && cd - && rm -rf /php-${PHP_VERSION}* \ 55 | && ln -sf /usr/local/php/bin/* /usr/bin/ \ 56 | && ln -sf /usr/local/php/sbin/* /usr/bin/ \ 57 | && sed -i "s/;date.timezone =/date.timezone =PRC/" /usr/local/php/etc/php.ini 58 | 59 | RUN useradd www 60 | 61 | RUN wget -O /nginx-${NGINX_VERSION}.tar.gz http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \ 62 | && echo 'install nginx' \ 63 | && tar zxvf /nginx-${NGINX_VERSION}.tar.gz && cd nginx-${NGINX_VERSION} \ 64 | && ./configure \ 65 | --prefix=/usr/local/nginx \ 66 | --with-http_stub_status_module \ 67 | --with-http_ssl_module \ 68 | --with-http_realip_module \ 69 | --with-http_sub_module \ 70 | --with-http_gzip_static_module \ 71 | --with-pcre \ 72 | && make && make install \ 73 | && ln -sf /usr/local/nginx/sbin/nginx /usr/bin \ 74 | && make clean && yum clean all \ 75 | && cd ../ && rm -rf nginx-${NGINX_VERSION}* 76 | 77 | 78 | RUN /usr/local/php/bin/pecl install redis swoole && \ 79 | echo "extension=swoole.so" >> "$PHP_INI_FILE" && \ 80 | echo "extension=redis.so" >> "$PHP_INI_FILE" 81 | 82 | RUN echo 'install yar' \ 83 | && wget http://pecl.php.net/get/yar-${YAR_VER}.tgz \ 84 | && tar xzf yar-${YAR_VER}.tgz && cd yar-${YAR_VER}/ \ 85 | && phpize \ 86 | && ./configure \ 87 | && make && make install \ 88 | && echo "extension=yar.so" >> "$PHP_INI_FILE" \ 89 | && cd ../ && rm -rf yar-${YAR_VER}* 90 | 91 | RUN wget http://download.redis.io/releases/redis-${REDIS_VER}.tar.gz -O /redis-${REDIS_VER}.tar.gz \ 92 | && echo 'install redis' \ 93 | && tar xzf /redis-${REDIS_VER}.tar.gz && cd redis-${REDIS_VER} \ 94 | && make \ 95 | && mkdir /usr/local/redis \ 96 | && cp redis.conf /usr/local/redis/ \ 97 | && cd src && cp redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis \ 98 | && cd / && rm -rf redis-${REDIS_VER}* 99 | 100 | ADD ./run.sh /run.sh 101 | RUN chmod 755 /run.sh 102 | 103 | CMD /run.sh && tail -f 104 | 105 | EXPOSE 80 106 | EXPOSE 9000 107 | 108 | #docker build -t php56-fpm-centos68 -f Dockerfile_online . 109 | 110 | -------------------------------------------------------------------------------- /php56-fpm-centos68/Dockerfile_online_v2: -------------------------------------------------------------------------------- 1 | #FROM centos:centos6.8 2 | FROM daocloud.io/centos:6.8 3 | 4 | MAINTAINER yjc@52fhy.com 5 | 6 | # php 7 | ENV PHP_VERSION 5.6.33 8 | ENV PHP_URL="http://cn2.php.net/distributions/php-${PHP_VERSION}.tar.bz2" 9 | 10 | # nginx 11 | ENV NGINX_VERSION 1.12.2 12 | 13 | # redis 14 | ENV REDIS_VER 3.2.6 15 | 16 | # php-ext 17 | ENV SWOOLE_VER 1.10.1 18 | # https://github.com/swoole/swoole-src/archive/v1.10.1.tar.gz 19 | 20 | ENV PHPREDIS_VER 3.1.2 21 | ENV PHP_INI_FILE="/usr/local/php/etc/php.ini" 22 | 23 | ENV TZ=Asia/Shanghai 24 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 25 | 26 | RUN yum install -y gcc gcc-c++ bison autoconf wget lrzsz \ 27 | && yum install -y make cmake libtool libtool-ltdl-devel \ 28 | && yum install -y libjpeg-devel libpng-devel freetype-devel gd-devel \ 29 | && yum install -y python-devel patch \ 30 | && yum install -y openssl openssl-devel ncurses-devel \ 31 | && yum install -y bzip2 bzip2-devel.x86_64 unzip zlib-devel \ 32 | && yum install -y libxml2 libxml2-devel \ 33 | && yum install -y curl-devel \ 34 | && yum install -y readline-devel \ 35 | && yum install -y pcre-devel \ 36 | && yum clean all 37 | 38 | RUN wget -O /libmcrypt-2.5.7.tar.gz ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz \ 39 | && wget -O /mcrypt-2.6.8.tar.gz https://jaist.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz \ 40 | && wget -O /mhash-0.9.9.9.tar.gz https://jaist.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz \ 41 | && tar zxvf /libmcrypt-2.5.7.tar.gz && cd /libmcrypt-2.5.7 && ./configure && make && make install && cd - / && rm -rf /libmcrypt* \ 42 | && tar zxvf /mhash-0.9.9.9.tar.gz && cd mhash-0.9.9.9 && ./configure && make && make install && cd - / && rm -rf /mhash* \ 43 | && tar zxvf /mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8 && LD_LIBRARY_PATH=/usr/local/lib ./configure && make && make install && cd - / && rm -rf /mcrypt* 44 | 45 | RUN wget -O /php-${PHP_VERSION}.tar.bz2 "$PHP_URL" \ 46 | && tar jxvf /php-${PHP_VERSION}.tar.bz2 && cd php-${PHP_VERSION}/ \ 47 | && ./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --enable-inline-optimization --enable-opcache --enable-session --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pdo-sqlite --with-sqlite3 --with-gettext --enable-mbregex --enable-mbstring --enable-xml --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-xmlrpc --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-curlwrappers --with-zlib --enable-zip --with-bz2 --with-gd --enable-gd-native-ttf --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-readline \ 48 | && make && make install \ 49 | && cp php.ini-production php.ini \ 50 | && cp php.ini* /usr/local/php/etc/ \ 51 | && cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf \ 52 | && make clean && yum clean all && cd - && rm -rf /php-${PHP_VERSION}* \ 53 | && ln -sf /usr/local/php/bin/* /usr/bin/ \ 54 | && ln -sf /usr/local/php/sbin/* /usr/bin/ \ 55 | && sed -i "s/;date.timezone =/date.timezone =PRC/" /usr/local/php/etc/php.ini 56 | 57 | RUN useradd www 58 | 59 | RUN wget -O /nginx-${NGINX_VERSION}.tar.gz http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \ 60 | && echo 'install nginx' \ 61 | && tar zxvf /nginx-${NGINX_VERSION}.tar.gz && cd nginx-${NGINX_VERSION} \ 62 | && ./configure \ 63 | --prefix=/usr/local/nginx \ 64 | --with-http_stub_status_module \ 65 | --with-http_ssl_module \ 66 | --with-http_realip_module \ 67 | --with-http_sub_module \ 68 | --with-http_gzip_static_module \ 69 | --with-pcre \ 70 | && make && make install \ 71 | && ln -sf /usr/local/nginx/sbin/nginx /usr/bin \ 72 | && make clean && yum clean all \ 73 | && cd ../ && rm -rf nginx-${NGINX_VERSION}* 74 | 75 | 76 | RUN /usr/local/php/bin/pecl install redis swoole yar-1.2.5 xdebug-2.5.5 && \ 77 | echo "extension=swoole.so" >> "$PHP_INI_FILE" && \ 78 | echo "extension=redis.so" >> "$PHP_INI_FILE" && 79 | echo "zend_extension=xdebug.so" >> "$PHP_INI_FILE" && 80 | echo "extension=yar.so" >> "$PHP_INI_FILE" 81 | 82 | RUN echo 'install yaf' \ 83 | && wget http://pecl.php.net/get/yaf-2.3.5.tgz \ 84 | && tar xzf yaf-2.3.5.tgz && cd yaf-2.3.5/ \ 85 | && phpize \ 86 | && ./configure \ 87 | && make && make install \ 88 | && echo "extension=yaf.so" >> "$PHP_INI_FILE" \ 89 | && cd ../ && rm -rf yaf-2.3.5* 90 | 91 | 92 | 93 | RUN wget http://download.redis.io/releases/redis-${REDIS_VER}.tar.gz -O /redis-${REDIS_VER}.tar.gz \ 94 | && echo 'install redis' \ 95 | && tar xzf /redis-${REDIS_VER}.tar.gz && cd redis-${REDIS_VER} \ 96 | && make \ 97 | && mkdir /usr/local/redis \ 98 | && cp redis.conf /usr/local/redis/ \ 99 | && cd src && cp redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis \ 100 | && cd / && rm -rf redis-${REDIS_VER}* 101 | 102 | ADD ./run.sh /run.sh 103 | RUN chmod 755 /run.sh 104 | 105 | CMD /run.sh && tail -f 106 | 107 | EXPOSE 80 108 | EXPOSE 9000 109 | 110 | #docker build -t php56-fpm-centos68 -f Dockerfile_online . 111 | 112 | -------------------------------------------------------------------------------- /php56-fpm-centos68/README.md: -------------------------------------------------------------------------------- 1 | 2 | # php56-fpm-centos68 3 | 4 | 基于 centos:6.8 镜像。 5 | 6 | php5.6的开发环境。包含: 7 | 8 | - CentOS 6.8 9 | - PHP 5.6.33 10 | - php-fpm 11 | - Nginx 1.12.2 12 | - Redis 3.2.6 13 | 14 | 包含的PHP附加扩展: 15 | 16 | - swoole 1.10.1 17 | - phpredis 3.1.2 18 | - yar 1.2.5 19 | 20 | 相关目录: 21 | 22 | - php根目录:/usr/local/php/ 23 | - php可执行程序目录:/usr/local/php/bin/、/usr/local/php/sbin/ 24 | - php配置目录:/usr/local/php/etc/ 25 | - nginx根目录:/usr/local/nginx/ 26 | - nginx可执行程序目录:/usr/local/nginx/sbin/ 27 | - nginx配置目录:/usr/local/nginx/conf/ 28 | 29 | ## 如何使用 30 | 31 | 1、首次使用需要先编译成镜像: 32 | 33 | ``` bash 34 | cp -rf ../php70-fpm-centos68/*gz ./ 35 | docker build -t php56-fpm-centos68 . 36 | ``` 37 | 或者执行bulid.sh。 38 | 39 | 编译需要30分钟左右。实际视机器性能而定。 40 | 41 | 如果不能COPY当前目录的已下载文件,那么可以指定 Dockerfile_online : 42 | ``` bash 43 | docker build -t php56-fpm-centos68 -f Dockerfile_online . 44 | ``` 45 | 该Dockerfile会联网下载所需要的资源。 46 | 47 | 2、编译完成后可以创建容器了。默认会自动启动Nginx、php-fpm服务: 48 | 49 | ``` bash 50 | docker run -d --name yphp -p 80:80 -p 9000:9000 -v /work/:/work/ php56-fpm-centos68 51 | docker ps 52 | ``` 53 | 54 | 其中`-v /work/:/work/`指定将本机的`/work`目录挂载到容器内的`/work`目录。建议挂载。本机的`/work`目录必须存在。 55 | 56 | `docker ps`看到的内容: 57 | 58 | ``` 59 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 60 | db13127cb76b php56-fpm-centos68 "/run.sh" 1 second ago Up 1 second 0.0.0.0:80->80/tcp, 0.0.0.0:9000->9000/tcp yphp 61 | ``` 62 | 表名容器正则运行。如果`STATUS`是Exit(1)则说明容器异常退出,如果Exit(0)说明容器只执行了命令就立即退出了。 63 | 可以使用`docker logs db13127cb76b` 查看容器具体退出情况。db13127cb76b是某个容器ID(CONTAINER ID)。 64 | 如果是Exit(0)可能是没有维持住后台运行,建议在命令加入`tail -f`这种可以一直运行的命令。 65 | 66 | 3、如果想自行配置php.ini、nginx.conf,可以将配置目录映射到宿主机: 67 | ``` bash 68 | docker run -d --name yphp -p 80:80 -p 9000:9000 \ 69 | -v /work/:/work/ \ 70 | -v "/work/yphp/php/etc/":/usr/local/php/etc/ \ 71 | -v "/work/yphp/nginx/conf/":/usr/local/nginx/conf/ \ 72 | -v "/work/yphp/nginx/logs/":/usr/local/nginx/logs/ \ 73 | php56-fpm-centos68 74 | ``` 75 | 76 | 其中`/work/yphp`是本地宿主机的一个目录,里面包含php和nginx的配置,目录结构: 77 | ``` 78 | /work/yphp/ 79 | |--nginx 80 | |--conf 81 | |--nginx.conf 82 | |--vhost 83 | |--php 84 | |--etc 85 | |--php.ini 86 | |--php-fpm.d 87 | |--www.conf 88 | ``` 89 | 如果不想对每个配置都进行映射,也可以指定需要映射的配置文件: 90 | ```bash 91 | docker run -d --name yphp -p 80:80 -p 9000:9000 \ 92 | -v /work/:/work/ \ 93 | -v "/work/yphp/php/etc/php.ini":/usr/local/php/etc/php.ini \ 94 | -v "/work/yphp/nginx/conf/nginx.conf":/usr/local/nginx/conf/nginx.conf \ 95 | -v "/work/yphp/nginx/conf/vhost/":/usr/local/nginx/conf/vhost/ \ 96 | -v "/work/yphp/nginx/logs/":/usr/local/nginx/logs/ \ 97 | php56-fpm-centos68 98 | ``` 99 | 100 | >注意:由于这里覆盖了php.ini,所以想要开启第三方扩展的话,想要提前在php.ini里追加: 101 | ``` 102 | extension=redis.so 103 | extension=swoole.so 104 | extension=yar.so 105 | ``` 106 | 107 | 或者启动后追加然后重启容器里的php-fpm: 108 | ``` bash 109 | docker exec 容器ID killall php-fpm 110 | docker exec 容器ID php-fpm 111 | ``` 112 | 113 | 4、如果不需要一开始就运行服务,想进入容器自行启动,可以直接进入容器: 114 | ``` bash 115 | docker run -it --name yphp -v /work/:/work/ php56-fpm-centos68 /bin/bash 116 | ``` 117 | 118 | 退出容器使用exit。 119 | 120 | 5、想对当前容器打包为镜像,方便后续使用:(需要先停止容器) 121 | ``` bash 122 | # 从容器生成镜像 123 | # -m 加一些改动信息,-a 指定作者相关信息,db13127cb76b这一串为容器id,再后面为新镜像的名字 124 | docker commit -m "create images" -a "52fhy" db13127cb76b php56-fpm-centos68:yphp_v1 125 | 126 | # 导出镜像 127 | docker save -o yphp.tar php56-fpm-centos68:yphp_v1 128 | 129 | # 导入镜像 130 | docker load --input yphp.tar 131 | ``` 132 | 133 | 导出的镜像可以压缩以节约空间。 134 | 135 | 6、增加PHP扩展 136 | 137 | 有下面几种方法,只要编译出了.so文件就简单了。以演示xdebug为例: 138 | 139 | 1) 如果已经编译好了.so文件,直接复制到挂载目录(例如`/work`)。使用`docker exec -it 容器ID /bin/bash`进入容器,通过`php-config`可以看到扩展所在目录,复制到该目录,修改php.ini,追加`zend_extension=xdebug.so`,重启php-fpm即可。 140 | 141 | >注:一般扩展都是`extension=xxx.so`,xdebug特殊。 142 | 143 | 2) 需要先进入容器,使用`pecl install xdebug`自动编译生成.so文件。会自动复制到扩展目录。修改php.ini重启php-fpm生效。 144 | 145 | 3) pecl如果提示找不到该扩展,则使用源码编译。例如: 146 | ``` bash 147 | git clone https://github.com/xdebug/xdebug.git 148 | cd xdebug/ 149 | git checkout xdebug_2_5 150 | phpize 151 | ./configure 152 | make 153 | make install 154 | ``` 155 | 156 | >注:php5.6只能使用2.5及以下版本xdebug。 157 | 158 | 一般可以在pecl.php.net找到源码。例如:http://pecl.php.net/package/xdebug 。编译方法差不多: 159 | ``` bash 160 | wget http://pecl.php.net/get/xdebug-2.5.5.tgz \ 161 | && tar xzf xdebug-2.5.5.tgz && cd xdebug-2.5.5/ \ 162 | && phpize \ 163 | && ./configure \ 164 | && make && make install 165 | ``` 166 | 167 | 168 | 169 | 170 | 171 | -------------------------------------------------------------------------------- /php56-fpm-centos68/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cp -rf ../php70-fpm-centos68/*gz ./ 3 | docker build -t php56-fpm-centos68 . 4 | -------------------------------------------------------------------------------- /php56-fpm-centos68/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | nginx 3 | /usr/local/php/sbin/php-fpm 4 | ps -ef 5 | tail -f /usr/local/nginx/logs/access.log -------------------------------------------------------------------------------- /php56-fpm-centos68/xdebug.so.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php56-fpm-centos68/xdebug.so.tar.gz -------------------------------------------------------------------------------- /php56-fpm-centos68/yar-1.2.5.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php56-fpm-centos68/yar-1.2.5.tgz -------------------------------------------------------------------------------- /php70-fpm-centos68/Dockerfile: -------------------------------------------------------------------------------- 1 | # centos6 php7.0.14 2 | #FROM centos:centos6.8 3 | FROM daocloud.io/centos:6.8 4 | 5 | MAINTAINER yjc@52fhy.com 6 | 7 | # php 8 | ENV PHP_VERSION 7.0.14 9 | ENV PHP_URL="http://cn2.php.net/distributions/php-${PHP_VERSION}.tar.bz2" 10 | 11 | # nginx 12 | ENV NGINX_VERSION 1.12.2 13 | 14 | # redis 15 | ENV REDIS_VER 3.2.6 16 | 17 | # php-ext 18 | ENV SWOOLE_VER 1.10.1 19 | # https://github.com/swoole/swoole-src/archive/v1.10.1.tar.gz 20 | 21 | ENV PHPREDIS_VER 3.0.0 22 | ENV YAR_VER 2.0.2 23 | ENV PHP_INI_FILE="/usr/local/php/etc/php.ini" 24 | 25 | COPY libmcrypt-2.5.8.tar.gz /libmcrypt-2.5.8.tar.gz 26 | COPY mcrypt-2.6.8.tar.gz /mcrypt-2.6.8.tar.gz 27 | COPY mhash-0.9.9.9.tar.gz /mhash-0.9.9.9.tar.gz 28 | 29 | COPY nginx-${NGINX_VERSION}.tar.gz /nginx-${NGINX_VERSION}.tar.gz 30 | 31 | COPY swoole-src-${SWOOLE_VER}.tar.gz /${SWOOLE_VER}.tar.gz 32 | 33 | 34 | COPY redis-${REDIS_VER}.tar.gz /redis-${REDIS_VER}.tar.gz 35 | COPY phpredis-${PHPREDIS_VER}.tar.gz /phpredis-${PHPREDIS_VER}.tar.gz 36 | COPY yar-${YAR_VER}.tgz /yar-${YAR_VER}.tgz 37 | 38 | ENV TZ=Asia/Shanghai 39 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 40 | 41 | RUN yum install -y gcc gcc-c++ bison autoconf wget lrzsz \ 42 | && yum install -y make cmake libtool libtool-ltdl-devel \ 43 | && yum install -y libjpeg-devel libpng-devel freetype-devel gd-devel \ 44 | && yum install -y python-devel patch \ 45 | && yum install -y openssl openssl-devel ncurses-devel \ 46 | && yum install -y bzip2 bzip2-devel.x86_64 unzip zlib-devel \ 47 | && yum install -y libxml2 libxml2-devel \ 48 | && yum install -y curl-devel \ 49 | && yum install -y readline-devel \ 50 | && yum install -y pcre-devel \ 51 | && yum clean all 52 | 53 | # RUN wget -O /libmcrypt-2.5.8.tar.gz ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz \ 54 | RUN tar zxvf /libmcrypt-2.5.8.tar.gz \ 55 | && cd /libmcrypt-2.5.8 && ./configure && make && make install && cd - / && rm -rf /libmcrypt* \ 56 | && tar zxvf /mhash-0.9.9.9.tar.gz && cd mhash-0.9.9.9 && ./configure && make && make install && cd - / && rm -rf /mhash* \ 57 | && tar zxvf /mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8 && LD_LIBRARY_PATH=/usr/local/lib ./configure && make && make install && cd - / && rm -rf /mcrypt* 58 | 59 | RUN wget -O /php-${PHP_VERSION}.tar.bz2 "$PHP_URL" \ 60 | && tar jxvf /php-${PHP_VERSION}.tar.bz2 && cd php-${PHP_VERSION}/ \ 61 | && ./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --enable-inline-optimization --enable-opcache --enable-session --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pdo-sqlite --with-sqlite3 --with-gettext --enable-mbregex --enable-mbstring --enable-xml --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-xmlrpc --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-curlwrappers --with-zlib --enable-zip --with-bz2 --with-gd --enable-gd-native-ttf --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-readline \ 62 | && make && make install \ 63 | && cp php.ini-production php.ini \ 64 | && cp php.ini* /usr/local/php/etc/ \ 65 | && cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf \ 66 | && cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf \ 67 | && make clean && yum clean all && cd - && rm -rf /php-${PHP_VERSION}* \ 68 | && ln -sf /usr/local/php/bin/* /usr/bin/ \ 69 | && ln -sf /usr/local/php/sbin/* /usr/bin/ \ 70 | && sed -i "s/;date.timezone =/date.timezone =PRC/" /usr/local/php/etc/php.ini 71 | 72 | RUN useradd www 73 | 74 | #RUN wget -O /nginx-${NGINX_VERSION}.tar.gz http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \ 75 | RUN echo 'install nginx' \ 76 | && tar zxvf /nginx-${NGINX_VERSION}.tar.gz && cd nginx-${NGINX_VERSION} \ 77 | && ./configure \ 78 | --prefix=/usr/local/nginx \ 79 | --with-http_stub_status_module \ 80 | --with-http_ssl_module \ 81 | --with-http_realip_module \ 82 | --with-http_sub_module \ 83 | --with-http_gzip_static_module \ 84 | --with-pcre \ 85 | && make && make install \ 86 | && ln -sf /usr/local/nginx/sbin/nginx /usr/bin \ 87 | && make clean && yum clean all \ 88 | && cd ../ && rm -rf nginx-${NGINX_VERSION}* 89 | 90 | #RUN wget https://github.com/swoole/swoole-src/archive/swoole-src-${SWOOLE_VER}.tar.gz \ 91 | RUN echo 'install swoole' \ 92 | && tar xzf /${SWOOLE_VER}.tar.gz && cd swoole-src-${SWOOLE_VER} \ 93 | && phpize \ 94 | && ./configure \ 95 | && make && make install \ 96 | && echo "extension=swoole.so" >> "$PHP_INI_FILE" \ 97 | && cd ../ && rm -rf swoole-src-${SWOOLE_VER}* 98 | 99 | #RUN wget https://codeload.github.com/phpredis/phpredis/tar.gz/${PHPREDIS_VER}.tar.gz\ 100 | RUN echo 'install phpredis' \ 101 | && tar xzf /phpredis-${PHPREDIS_VER}.tar.gz && cd phpredis-${PHPREDIS_VER}/ \ 102 | && phpize \ 103 | && ./configure \ 104 | && make && make install \ 105 | && echo "extension=redis.so" >> "$PHP_INI_FILE" \ 106 | && cd ../ && rm -rf phpredis-${PHPREDIS_VER}* 107 | 108 | RUN echo 'install yar' \ 109 | && tar xzf /yar-${YAR_VER}.tgz && cd yar-${YAR_VER}/ \ 110 | && phpize \ 111 | && ./configure \ 112 | && make && make install \ 113 | && echo "extension=yar.so" >> "$PHP_INI_FILE" \ 114 | && cd ../ && rm -rf yar-${YAR_VER}* 115 | 116 | #RUN wget http://download.redis.io/releases/redis-${REDIS_VER}.tar.gz \ 117 | RUN echo 'install redis' \ 118 | && tar xzf /redis-${REDIS_VER}.tar.gz && cd redis-${REDIS_VER} \ 119 | && make \ 120 | && mkdir /usr/local/redis \ 121 | && cp redis.conf /usr/local/redis/ \ 122 | && cd src && cp redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis \ 123 | && cd ../ && rm -rf redis-${REDIS_VER}* 124 | 125 | ADD ./run.sh /run.sh 126 | RUN chmod 755 /run.sh 127 | 128 | CMD /run.sh && tail -f 129 | 130 | EXPOSE 80 131 | EXPOSE 9000 132 | 133 | #docker build -t php70-fpm-centos68 . 134 | 135 | -------------------------------------------------------------------------------- /php70-fpm-centos68/README.md: -------------------------------------------------------------------------------- 1 | 2 | # php70-fpm-centos68 3 | 4 | 基于 centos:6.8 镜像。 5 | 6 | php7.0的开发环境。包含: 7 | 8 | - CentOS 6.8 9 | - PHP 7.0.14 10 | - php-fpm 11 | - Nginx 1.12.2 12 | - Redis 3.2.6 13 | 14 | 包含的PHP附加扩展: 15 | 16 | - swoole 1.10.1 17 | - phpredis 3.0.0 18 | - yar 2.0.2 19 | 20 | 相关目录: 21 | 22 | - php根目录:/usr/local/php/ 23 | - php可执行程序目录:/usr/local/php/bin/、/usr/local/php/sbin/ 24 | - php配置目录:/usr/local/php/etc/ 25 | - nginx根目录:/usr/local/nginx/ 26 | - nginx可执行程序目录:/usr/local/nginx/sbin/ 27 | - nginx配置目录:/usr/local/nginx/conf/ 28 | 29 | ## 如何使用 30 | 31 | 1、首次使用需要先编译成镜像: 32 | 33 | ``` bash 34 | docker build -t php70-fpm-centos68 . 35 | ``` 36 | 或者执行bulid.sh。 37 | 38 | 编译需要30分钟左右。实际视机器性能而定。 39 | 40 | 2、编译完成后可以创建容器了。默认会自动启动Nginx、php-fpm服务: 41 | 42 | ``` bash 43 | docker run -d --name yphp -p 80:80 -p 9000:9000 -v /work/:/work/ php70-fpm-centos68 44 | docker ps 45 | ``` 46 | 47 | 其中`-v /work/:/work/`指定将本机的`/work`目录挂载到容器内的`/work`目录。建议挂载。本机的`/work`目录必须存在。 48 | 49 | `docker ps`看到的内容: 50 | 51 | ``` 52 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 53 | db13127cb76b php70-fpm-centos68 "/run.sh" 1 second ago Up 1 second 0.0.0.0:80->80/tcp, 0.0.0.0:9000->9000/tcp yphp 54 | ``` 55 | 表名容器正则运行。如果`STATUS`是Exit(1)则说明容器异常退出,如果Exit(0)说明容器只执行了命令就立即退出了。 56 | 可以使用`docker logs db13127cb76b` 查看容器具体退出情况。db13127cb76b是某个容器ID(CONTAINER ID)。 57 | 如果是Exit(0)可能是没有维持住后台运行,建议在命令加入`tail -f`这种可以一直运行的命令。 58 | 59 | 3、如果想自行配置php.ini、nginx.conf,可以将配置目录映射到宿主机: 60 | ``` bash 61 | docker run -d --name yphp -p 80:80 -p 9000:9000 \ 62 | -v /work/:/work/ \ 63 | -v "/work/yphp/php/etc/":/usr/local/php/etc/ \ 64 | -v "/work/yphp/nginx/conf/":/usr/local/nginx/conf/ \ 65 | -v "/work/yphp/nginx/logs/":/usr/local/nginx/logs/ \ 66 | php70-fpm-centos68 67 | ``` 68 | 69 | 其中`/work/yphp`是本地宿主机的一个目录,里面包含php和nginx的配置,目录结构: 70 | ``` 71 | /work/yphp/ 72 | |--nginx 73 | |--conf 74 | |--nginx.conf 75 | |--vhost 76 | |--php 77 | |--etc 78 | |--php.ini 79 | |--php-fpm.d 80 | |--www.conf 81 | ``` 82 | 如果不想对每个配置都进行映射,也可以指定需要映射的配置文件: 83 | ```bash 84 | docker run -d --name yphp -p 80:80 -p 9000:9000 \ 85 | -v /work/:/work/ \ 86 | -v "/work/yphp/php/etc/php.ini":/usr/local/php/etc/php.ini \ 87 | -v "/work/yphp/nginx/conf/nginx.conf":/usr/local/nginx/conf/nginx.conf \ 88 | -v "/work/yphp/nginx/conf/vhost/":/usr/local/nginx/conf/vhost/ \ 89 | -v "/work/yphp/nginx/logs/":/usr/local/nginx/logs/ \ 90 | php70-fpm-centos68 91 | ``` 92 | 93 | 4、如果不需要一开始就运行服务,想进入容器自行启动,可以直接进入容器: 94 | ``` bash 95 | docker run -it --name yphp -v /work/:/work/ php70-fpm-centos68 /bin/bash 96 | ``` 97 | 98 | 退出容器使用exit。 99 | 100 | 5、想对当前容器打包为镜像,方便后续使用:(需要先停止容器) 101 | ``` bash 102 | # 从容器生成镜像 103 | # -m 加一些改动信息,-a 指定作者相关信息,db13127cb76b这一串为容器id,再后面为新镜像的名字 104 | docker commit -m "create images" -a "52fhy" db13127cb76b php70-fpm-centos68:yphp_v1 105 | 106 | # 导出镜像 107 | docker save -o yphp.tar php70-fpm-centos68:yphp_v1 108 | 109 | # 导入镜像 110 | docker load --input yphp.tar 111 | ``` 112 | 113 | 导出的镜像可以压缩以节约空间。 114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /php70-fpm-centos68/libmcrypt-2.5.8.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php70-fpm-centos68/libmcrypt-2.5.8.tar.gz -------------------------------------------------------------------------------- /php70-fpm-centos68/mcrypt-2.6.8.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php70-fpm-centos68/mcrypt-2.6.8.tar.gz -------------------------------------------------------------------------------- /php70-fpm-centos68/mhash-0.9.9.9.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php70-fpm-centos68/mhash-0.9.9.9.tar.gz -------------------------------------------------------------------------------- /php70-fpm-centos68/nginx-1.12.2.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php70-fpm-centos68/nginx-1.12.2.tar.gz -------------------------------------------------------------------------------- /php70-fpm-centos68/phpredis-3.0.0.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php70-fpm-centos68/phpredis-3.0.0.tar.gz -------------------------------------------------------------------------------- /php70-fpm-centos68/phpredis-3.1.2.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php70-fpm-centos68/phpredis-3.1.2.tar.gz -------------------------------------------------------------------------------- /php70-fpm-centos68/redis-3.2.6.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php70-fpm-centos68/redis-3.2.6.tar.gz -------------------------------------------------------------------------------- /php70-fpm-centos68/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | nginx 3 | /usr/local/php/sbin/php-fpm 4 | ps -ef 5 | tail -f /usr/local/nginx/logs/access.log -------------------------------------------------------------------------------- /php70-fpm-centos68/swoole-src-1.10.1.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php70-fpm-centos68/swoole-src-1.10.1.tar.gz -------------------------------------------------------------------------------- /php70-fpm-centos68/yar-2.0.2.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php70-fpm-centos68/yar-2.0.2.tgz -------------------------------------------------------------------------------- /php71-fpm-centos68-phalcon-withext/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php71-fpm-centos68 2 | 3 | MAINTAINER yjc@52fhy.com 4 | 5 | # php 6 | ENV PHP_VERSION 7.1.12 7 | ENV PHP_URL="http://cn2.php.net/distributions/php-${PHP_VERSION}.tar.bz2" 8 | 9 | # RUN yum -y install git 10 | 11 | ADD libgearman.so.8 /usr/local/lib/ 12 | ADD ext.tar.gz /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/ 13 | 14 | # php-ext 15 | RUN echo "extension=msgpack.so" >> "$PHP_INI_FILE" && \ 16 | echo "extension=protobuf.so" >> "$PHP_INI_FILE" && \ 17 | echo "extension=yac.so" >> "$PHP_INI_FILE" && \ 18 | echo "extension=yaconf.so" >> "$PHP_INI_FILE" && \ 19 | echo "extension=mongodb.so" >> "$PHP_INI_FILE" && \ 20 | echo "extension=seaslog.so" >> "$PHP_INI_FILE" && \ 21 | echo "extension=phalcon.so" >> "$PHP_INI_FILE" && \ 22 | echo "extension=tideways.so" >> "$PHP_INI_FILE" && \ 23 | echo "extension=gearman.so" >> "$PHP_INI_FILE" 24 | 25 | ADD ./run.sh /run.sh 26 | RUN chmod +x /run.sh 27 | 28 | EXPOSE 80 29 | EXPOSE 9000 30 | 31 | CMD ["/run.sh"] 32 | 33 | #docker build -t php71-fpm-centos68-phalcon-withext . 34 | 35 | -------------------------------------------------------------------------------- /php71-fpm-centos68-phalcon-withext/README.md: -------------------------------------------------------------------------------- 1 | 2 | # php71-fpm-centos68-phalcon-withext 3 | 4 | 基于自行编译的 php71-fpm-centos68 镜像,父镜像是 centos:6.8。 5 | 6 | 与php71-fpm-centos68-phalcon功能一样,只是PHP扩展部分采用直接将php71-fpm-centos68-phalcon镜像编译好的so文件复制到镜像内,而省去了编译的过程,且节约了空间(php71-fpm-centos68 800M,php71-fpm-centos68-phalcon 1.4G,php71-fpm-centos68-phalcon-withext 831M)。 7 | 8 | php7.1-phalcon的开发环境。包含: 9 | 10 | - CentOS 6.8 11 | - PHP 7.1.12 12 | - php-fpm 13 | - Nginx 1.12.2 14 | - Redis 3.2.6 15 | 16 | 包含的PHP附加扩展: 17 | 18 | - swoole 1.10.1 19 | - phpredis 3.0.0 20 | - yar 2.0.2 21 | - phpalcon 3.3.1 22 | - xhprof_tideways 4.1.5 23 | - msgpack 24 | - protobuf 25 | - yaconf 26 | - mongodb 27 | - seaslog 28 | - gearman 1.1.18 29 | 30 | 相关目录: 31 | 32 | - php根目录:/usr/local/php/ 33 | - php可执行程序目录:/usr/local/php/bin/、/usr/local/php/sbin/ 34 | - php配置目录:/usr/local/php/etc/ 35 | - nginx根目录:/usr/local/nginx/ 36 | - nginx可执行程序目录:/usr/local/nginx/sbin/ 37 | - nginx配置目录:/usr/local/nginx/conf/ 38 | 39 | 其中gearman依赖libgearman.so.8库,需要把该库文件复制到`/usr/local/lib/`。 40 | 41 | ## 如何使用 42 | 43 | 1、首次使用需要先编译成镜像: 44 | 45 | ``` bash 46 | docker build -t php71-fpm-centos68-phalcon-withext . 47 | ``` 48 | 或者执行bulid.sh。 49 | 50 | 编译需要30分钟左右。实际视机器性能而定。 51 | 52 | >注:因为父镜像是[`php71-fpm-centos68`](https://github.com/52fhy/docker-images/tree/master/php71-fpm-centos68)故需要先编译生成该镜像。已存在则忽略。 53 | 54 | 也可以下载打包好的镜像文件 php71-fpm-centos68-phalcon-withext.tar.gz (239M,https://pan.baidu.com/s/1bpYKnCF,密码: nged),然后: 55 | ``` 56 | docker load --input php71-fpm-centos68-phalcon-withext.tar.gz 57 | ``` 58 | 59 | 或者: 60 | ``` 61 | docker pull hub.c.163.com/jiancaigege/php71-fpm-centos68-phalcon-withext:latest 62 | ``` 63 | 64 | 2、编译完成后可以创建容器了。默认会自动启动Nginx、php-fpm服务: 65 | 66 | ``` bash 67 | docker run -d --name yphp -p 80:80 -p 9000:9000 -v /work/:/work/ php71-fpm-centos68-phalcon-withext 68 | docker ps 69 | ``` 70 | 71 | 其中`-v /work/:/work/`指定将本机的`/work`目录挂载到容器内的`/work`目录。建议挂载。本机的`/work`目录必须存在。 72 | 73 | `docker ps`看到的内容: 74 | 75 | ``` 76 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 77 | db13127cb76b php71-fpm-centos68-phalcon-withext "/run.sh" 1 second ago Up 1 second 0.0.0.0:80->80/tcp, 0.0.0.0:9000->9000/tcp yphp 78 | ``` 79 | 表名容器正则运行。如果`STATUS`是Exit(1)则说明容器异常退出,如果Exit(0)说明容器只执行了命令就立即退出了。 80 | 可以使用`docker logs db13127cb76b` 查看容器具体退出情况。db13127cb76b是某个容器ID(CONTAINER ID)。 81 | 如果是Exit(0)可能是没有维持住后台运行,建议在命令加入`tail -f`这种可以一直运行的命令。 82 | 83 | 3、如果想自行配置php.ini、nginx.conf,可以将配置目录映射到宿主机: 84 | ``` bash 85 | docker run -d --name yphp -p 80:80 -p 9000:9000 \ 86 | -v /work/:/work/ \ 87 | -v "/work/yphp/php/etc/":/usr/local/php/etc/ \ 88 | -v "/work/yphp/nginx/conf/":/usr/local/nginx/conf/ \ 89 | -v "/work/yphp/nginx/logs/":/usr/local/nginx/logs/ \ 90 | php71-fpm-centos68-phalcon-withext 91 | ``` 92 | 93 | 其中`/work/yphp`是本地宿主机的一个目录,里面包含php和nginx的配置,目录结构: 94 | ``` 95 | /work/yphp/ 96 | |--nginx 97 | |--conf 98 | |--nginx.conf 99 | |--vhost 100 | |--php 101 | |--etc 102 | |--php.ini 103 | |--php-fpm.d 104 | |--www.conf 105 | ``` 106 | 如果不想对每个配置都进行映射,也可以指定需要映射的配置文件: 107 | ```bash 108 | docker run -d --name yphp -p 80:80 -p 9000:9000 \ 109 | -v /work/:/work/ \ 110 | -v "/work/yphp/php/etc/php.ini":/usr/local/php/etc/php.ini \ 111 | -v "/work/yphp/nginx/conf/nginx.conf":/usr/local/nginx/conf/nginx.conf \ 112 | -v "/work/yphp/nginx/conf/vhost/":/usr/local/nginx/conf/vhost/ \ 113 | -v "/work/yphp/nginx/logs/":/usr/local/nginx/logs/ \ 114 | php71-fpm-centos68-phalcon-withext 115 | ``` 116 | 117 | >注意:由于这里覆盖了php.ini,所以想要开启第三方扩展的话,想要提前在php.ini里追加: 118 | ``` 119 | extension=redis.so 120 | extension=swoole.so 121 | extension=yar.so 122 | extension=yaconf.so 123 | extension=phalcon.so 124 | extension=seaslog.so 125 | extension=gearman.so 126 | extension=mongodb.so 127 | extension=tideways.so 128 | extension=protobuf.so 129 | extension=msgpack.so 130 | ``` 131 | 132 | 或者启动后追加然后重启容器里的php-fpm: 133 | ``` bash 134 | docker exec 容器ID killall php-fpm 135 | docker exec 容器ID php-fpm 136 | ``` 137 | 138 | 4、如果不需要一开始就运行服务,想进入容器自行启动,可以直接进入容器: 139 | ``` bash 140 | docker run -it --name yphp -v /work/:/work/ php71-fpm-centos68-phalcon-withext /bin/bash 141 | ``` 142 | 143 | 退出容器使用exit。 144 | 145 | 5、想对当前容器打包为镜像,方便后续使用:(需要先停止容器) 146 | ``` bash 147 | # 从容器生成镜像 148 | # -m 加一些改动信息,-a 指定作者相关信息,db13127cb76b这一串为容器id,再后面为新镜像的名字 149 | docker commit -m "create images" -a "52fhy" db13127cb76b php71-fpm-centos68:yphp_v1 150 | 151 | # 导出镜像 152 | docker save -o yphp.tar php71-fpm-centos68-phalcon-withext:yphp_v1 153 | 154 | # 导入镜像 155 | docker load --input yphp.tar 156 | ``` 157 | 158 | 导出的镜像可以压缩以节约空间。 159 | 160 | 6、增加PHP扩展 161 | 162 | 有下面几种方法,只要编译出了.so文件就简单了。以演示xdebug为例: 163 | 164 | 1) 如果已经编译好了.so文件,直接复制到挂载目录(例如`/work`)。使用`docker exec -it 容器ID /bin/bash`进入容器,通过`php-config`可以看到扩展所在目录,复制到该目录,修改php.ini,追加`zend_extension=xdebug.so`,重启php-fpm即可。 165 | 166 | >注:一般扩展都是`extension=xxx.so`,xdebug特殊。 167 | 168 | 2) 需要先进入容器,使用`pecl install xdebug`自动编译生成.so文件。会自动复制到扩展目录。修改php.ini重启php-fpm生效。 169 | 170 | 3) pecl如果提示找不到该扩展,则使用源码编译。例如: 171 | ``` bash 172 | git clone https://github.com/xdebug/xdebug.git 173 | cd xdebug/ 174 | phpize 175 | ./configure 176 | make 177 | make install 178 | ``` 179 | 180 | 一般可以在pecl.php.net找到源码。例如:http://pecl.php.net/package/xdebug 。编译方法差不多: 181 | ``` bash 182 | wget http://pecl.php.net/get/xdebug-2.5.5.tgz \ 183 | && tar xzf xdebug-2.5.5.tgz && cd xdebug-2.5.5/ \ 184 | && phpize \ 185 | && ./configure \ 186 | && make && make install 187 | ``` 188 | 189 | 7、compose一键启动 190 | 191 | docker-compose.yml 192 | ``` 193 | # development.yml 194 | version: '2' 195 | services: 196 | php-fpm: 197 | image: php71-fpm-centos68-phalcon-withext 198 | restart: always 199 | volumes: 200 | - /work/:/work/ 201 | -"/work/yphp/php/etc/":/usr/local/php/etc/ 202 | -"/work/yphp/nginx/conf/":/usr/local/nginx/conf/ 203 | -"/work/yphp/nginx/logs/":/usr/local/nginx/logs/ 204 | ports: 205 | - 90:9000 206 | - 80-90:80-90 207 | ``` 208 | 209 | 然后: 210 | ``` 211 | compose up -d 212 | ``` 213 | 214 | 或者不使用镜像里的nginx: 215 | ``` 216 | version: '2' 217 | services: 218 | nginx: 219 | image: daocloud.io/library/nginx:1.12.2-alpine 220 | restart: always 221 | links: 222 | - php-fpm:yphp71 223 | volumes: 224 | - /work/:/work/ 225 | -"/work/yphp/nginx/conf/":/usr/local/nginx/conf/ 226 | -"/work/yphp/nginx/logs/":/usr/local/nginx/logs/ 227 | ports: 228 | - 80-90:80-90 229 | 230 | php-fpm: 231 | image: php71-fpm-centos68-phalcon-withext 232 | restart: always 233 | volumes: 234 | - /work/:/work/ 235 | -"/work/yphp/php/etc/":/usr/local/php/etc/ 236 | ``` 237 | 238 | 注意:nginx容器由于使用了links,那么nginx配置文件里fastcgi_pass需要改成 yphp71:9000;php-fpm容器的php-fpm.d/www.conf里listen需要监听地址 0.0.0.0,而不是127.0.0.1。 239 | 240 | 241 | 242 | 243 | -------------------------------------------------------------------------------- /php71-fpm-centos68-phalcon-withext/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # development.yml 2 | version: '2' 3 | services: 4 | php-fpm: 5 | image: php71-fpm-centos68-phalcon-withext 6 | restart: always 7 | volumes: 8 | - /work/:/work/ 9 | -"/work/yphp/php/etc/":/usr/local/php/etc/ \ 10 | -"/work/yphp/nginx/conf/":/usr/local/nginx/conf/ \ 11 | -"/work/yphp/nginx/logs/":/usr/local/nginx/logs/ \ 12 | ports: 13 | - 90:9000 14 | - 80:80 -------------------------------------------------------------------------------- /php71-fpm-centos68-phalcon-withext/ext.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php71-fpm-centos68-phalcon-withext/ext.tar.gz -------------------------------------------------------------------------------- /php71-fpm-centos68-phalcon-withext/libgearman.so.8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php71-fpm-centos68-phalcon-withext/libgearman.so.8 -------------------------------------------------------------------------------- /php71-fpm-centos68-phalcon-withext/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | nginx 3 | /usr/local/php/sbin/php-fpm 4 | ps -ef 5 | tail -f /usr/local/nginx/logs/access.log -------------------------------------------------------------------------------- /php71-fpm-centos68-phalcon/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php71-fpm-centos68 2 | 3 | MAINTAINER yjc@52fhy.com 4 | 5 | # php 6 | ENV PHP_VERSION 7.1.12 7 | ENV PHP_URL="http://cn2.php.net/distributions/php-${PHP_VERSION}.tar.bz2" 8 | 9 | # nginx 10 | ENV NGINX_VERSION 1.12.2 11 | ENV PHALCON_VERSION 3.3.1 12 | ENV XHPROF_VERSION 4.1.5 13 | 14 | RUN yum -y install git 15 | 16 | # php-ext 17 | RUN pecl install msgpack protobuf yaconf mongodb seaslog 18 | 19 | # install phalcon ext 20 | # wget https://github.com/phalcon/cphalcon/archive/v${PHALCON_VERSION}.tar.gz 21 | # git clone --depth=1 "git://github.com/phalcon/cphalcon.git" && cd cphalcon/build && ./install 22 | COPY cphalcon-${PHALCON_VERSION}.tar.gz /cphalcon-${PHALCON_VERSION}.tar.gz 23 | RUN tar xzf /cphalcon-${PHALCON_VERSION}.tar.gz && cd cphalcon-${PHALCON_VERSION}/build && ./install 24 | 25 | # install xhprof_tideways ext 26 | RUN wget https://github.com/tideways/php-xhprof-extension/archive/v${XHPROF_VERSION}.tar.gz -O php-xhprof-extension-${XHPROF_VERSION}.tar.gz && tar xzf /php-xhprof-extension-${XHPROF_VERSION}.tar.gz && cd php-xhprof-extension-${XHPROF_VERSION} && phpize && ./configure && make && make install 27 | 28 | # install gearmand 29 | RUN yum install boost-devel gperf libevent libevent-devel mysql-devel libuuid-devel -y && \ 30 | wget https://github.com/gearman/gearmand/releases/download/1.1.18/gearmand-1.1.18.tar.gz && \ 31 | tar zxvf gearmand-1.1.18.tar.gz && cd gearmand-1.1.18 && \ 32 | ./configure && make && make install 33 | 34 | # install gearman ext 35 | # wget https://github.com/gearman/gearmand/releases/download/1.1.18/gearmand-1.1.18.tar.gz -O gearmand-1.1.18.tar.gz && tar xzf gearmand-1.1.18.tar.gz && cd gearmand-1.1.18 && ./configure && make && make install 36 | RUN wget https://github.com/wcgallego/pecl-gearman/archive/gearman-2.0.3.tar.gz && tar xzf /gearman-2.0.3.tar.gz && cd pecl-gearman-gearman-2.0.3 && phpize && ./configure && make && make install 37 | 38 | # install yac ext 39 | RUN wget http://pecl.php.net/get/yac-2.0.2.tgz && tar xvf yac-2.0.2.tgz && cd yac-2.0.2 && phpize && ./configure && make && make install 40 | 41 | RUN echo "extension=msgpack.so" >> "$PHP_INI_FILE" && \ 42 | echo "extension=protobuf.so" >> "$PHP_INI_FILE" && \ 43 | echo "extension=yac.so" >> "$PHP_INI_FILE" && \ 44 | echo "extension=yaconf.so" >> "$PHP_INI_FILE" && \ 45 | echo "extension=mongodb.so" >> "$PHP_INI_FILE" && \ 46 | echo "extension=seaslog.so" >> "$PHP_INI_FILE" && \ 47 | echo "extension=phalcon.so" >> "$PHP_INI_FILE" && \ 48 | echo "extension=tideways.so" >> "$PHP_INI_FILE" && \ 49 | echo "extension=gearman.so" >> "$PHP_INI_FILE" 50 | 51 | ADD ./run.sh /run.sh 52 | RUN chmod 755 /run.sh 53 | 54 | CMD /run.sh && tail -f 55 | 56 | EXPOSE 80 57 | EXPOSE 9000 58 | 59 | #docker build -t php71-fpm-centos68-phalcon . 60 | 61 | -------------------------------------------------------------------------------- /php71-fpm-centos68-phalcon/README.md: -------------------------------------------------------------------------------- 1 | 2 | # php71-fpm-centos68-phalcon 3 | 4 | 基于自行编译的 php71-fpm-centos68 镜像,父镜像是 centos:6.8。 5 | 6 | php7.1-phalcon的开发环境。包含: 7 | 8 | - CentOS 6.8 9 | - PHP 7.1.12 10 | - php-fpm 11 | - Nginx 1.12.2 12 | - Redis 3.2.6 13 | 14 | 包含的PHP附加扩展: 15 | 16 | - swoole 1.10.1 17 | - phpredis 3.0.0 18 | - yar 2.0.2 19 | - phpalcon 3.3.1 20 | - xhprof_tideways 4.1.5 21 | - msgpack 22 | - protobuf 23 | - yaconf 24 | - mongodb 25 | - seaslog 26 | - gearman 1.1.18 27 | 28 | 相关目录: 29 | 30 | - php根目录:/usr/local/php/ 31 | - php可执行程序目录:/usr/local/php/bin/、/usr/local/php/sbin/ 32 | - php配置目录:/usr/local/php/etc/ 33 | - nginx根目录:/usr/local/nginx/ 34 | - nginx可执行程序目录:/usr/local/nginx/sbin/ 35 | - nginx配置目录:/usr/local/nginx/conf/ 36 | 37 | 其中gearman比较难编译,依赖libgearman.so.8库。 38 | 39 | ## 如何使用 40 | 41 | 1、首次使用需要先编译成镜像: 42 | 43 | ``` bash 44 | docker build -t php71-fpm-centos68-phalcon . 45 | ``` 46 | 或者执行bulid.sh。 47 | 48 | 编译需要30分钟左右。实际视机器性能而定。 49 | 50 | 2、编译完成后可以创建容器了。默认会自动启动Nginx、php-fpm服务: 51 | 52 | ``` bash 53 | docker run -d --name yphp -p 80:80 -p 9000:9000 -v /work/:/work/ php71-fpm-centos68 54 | docker ps 55 | ``` 56 | 57 | 其中`-v /work/:/work/`指定将本机的`/work`目录挂载到容器内的`/work`目录。建议挂载。本机的`/work`目录必须存在。 58 | 59 | `docker ps`看到的内容: 60 | 61 | ``` 62 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 63 | db13127cb76b php71-fpm-centos68 "/run.sh" 1 second ago Up 1 second 0.0.0.0:80->80/tcp, 0.0.0.0:9000->9000/tcp yphp 64 | ``` 65 | 表名容器正则运行。如果`STATUS`是Exit(1)则说明容器异常退出,如果Exit(0)说明容器只执行了命令就立即退出了。 66 | 可以使用`docker logs db13127cb76b` 查看容器具体退出情况。db13127cb76b是某个容器ID(CONTAINER ID)。 67 | 如果是Exit(0)可能是没有维持住后台运行,建议在命令加入`tail -f`这种可以一直运行的命令。 68 | 69 | 3、如果想自行配置php.ini、nginx.conf,可以将配置目录映射到宿主机: 70 | ``` bash 71 | docker run -d --name yphp -p 80:80 -p 9000:9000 \ 72 | -v /work/:/work/ \ 73 | -v "/work/yphp/php/etc/":/usr/local/php/etc/ \ 74 | -v "/work/yphp/nginx/conf/":/usr/local/nginx/conf/ \ 75 | -v "/work/yphp/nginx/logs/":/usr/local/nginx/logs/ \ 76 | php71-fpm-centos68 77 | ``` 78 | 79 | 其中`/work/yphp`是本地宿主机的一个目录,里面包含php和nginx的配置,目录结构: 80 | ``` 81 | /work/yphp/ 82 | |--nginx 83 | |--conf 84 | |--nginx.conf 85 | |--vhost 86 | |--php 87 | |--etc 88 | |--php.ini 89 | |--php-fpm.d 90 | |--www.conf 91 | ``` 92 | 如果不想对每个配置都进行映射,也可以指定需要映射的配置文件: 93 | ```bash 94 | docker run -d --name yphp -p 80:80 -p 9000:9000 \ 95 | -v /work/:/work/ \ 96 | -v "/work/yphp/php/etc/php.ini":/usr/local/php/etc/php.ini \ 97 | -v "/work/yphp/nginx/conf/nginx.conf":/usr/local/nginx/conf/nginx.conf \ 98 | -v "/work/yphp/nginx/conf/vhost/":/usr/local/nginx/conf/vhost/ \ 99 | -v "/work/yphp/nginx/logs/":/usr/local/nginx/logs/ \ 100 | php71-fpm-centos68 101 | ``` 102 | 103 | 4、如果不需要一开始就运行服务,想进入容器自行启动,可以直接进入容器: 104 | ``` bash 105 | docker run -it --name yphp -v /work/:/work/ php71-fpm-centos68 /bin/bash 106 | ``` 107 | 108 | 退出容器使用exit。 109 | 110 | 5、想对当前容器打包为镜像,方便后续使用:(需要先停止容器) 111 | ``` bash 112 | # 从容器生成镜像 113 | # -m 加一些改动信息,-a 指定作者相关信息,db13127cb76b这一串为容器id,再后面为新镜像的名字 114 | docker commit -m "create images" -a "52fhy" db13127cb76b php71-fpm-centos68:yphp_v1 115 | 116 | # 导出镜像 117 | docker save -o yphp.tar php71-fpm-centos68:yphp_v1 118 | 119 | # 导入镜像 120 | docker load --input yphp.tar 121 | ``` 122 | 123 | 导出的镜像可以压缩以节约空间。 124 | 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /php71-fpm-centos68-phalcon/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cp -rf ../php70-fpm-centos68/*gz ./ 3 | docker build -t php71-fpm-centos68 . 4 | -------------------------------------------------------------------------------- /php71-fpm-centos68-phalcon/cphalcon-3.3.1.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/52fhy/docker-images/d8a6762e7de2493a16950ae5b75eafed73972a66/php71-fpm-centos68-phalcon/cphalcon-3.3.1.tar.gz -------------------------------------------------------------------------------- /php71-fpm-centos68-phalcon/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | nginx 3 | /usr/local/php/sbin/php-fpm 4 | ps -ef 5 | tail -f /usr/local/nginx/logs/access.log -------------------------------------------------------------------------------- /php71-fpm-centos68/Dockerfile: -------------------------------------------------------------------------------- 1 | #FROM centos:centos6.8 2 | FROM daocloud.io/centos:6.8 3 | 4 | MAINTAINER yjc@52fhy.com 5 | 6 | # php 7 | ENV PHP_VERSION 7.1.12 8 | ENV PHP_URL="http://cn2.php.net/distributions/php-${PHP_VERSION}.tar.bz2" 9 | 10 | # nginx 11 | ENV NGINX_VERSION 1.12.2 12 | 13 | # redis 14 | ENV REDIS_VER 3.2.6 15 | 16 | # php-ext 17 | ENV SWOOLE_VER 1.10.1 18 | # https://github.com/swoole/swoole-src/archive/v1.10.1.tar.gz 19 | 20 | ENV PHPREDIS_VER 3.0.0 21 | ENV YAR_VER 2.0.2 22 | ENV PHP_INI_FILE="/usr/local/php/etc/php.ini" 23 | 24 | COPY libmcrypt-2.5.8.tar.gz /libmcrypt-2.5.8.tar.gz 25 | COPY mcrypt-2.6.8.tar.gz /mcrypt-2.6.8.tar.gz 26 | COPY mhash-0.9.9.9.tar.gz /mhash-0.9.9.9.tar.gz 27 | 28 | COPY nginx-${NGINX_VERSION}.tar.gz /nginx-${NGINX_VERSION}.tar.gz 29 | 30 | COPY swoole-src-${SWOOLE_VER}.tar.gz /${SWOOLE_VER}.tar.gz 31 | 32 | 33 | COPY redis-${REDIS_VER}.tar.gz /redis-${REDIS_VER}.tar.gz 34 | COPY phpredis-${PHPREDIS_VER}.tar.gz /phpredis-${PHPREDIS_VER}.tar.gz 35 | COPY yar-${YAR_VER}.tgz /yar-${YAR_VER}.tgz 36 | 37 | ENV TZ=Asia/Shanghai 38 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 39 | 40 | RUN yum install -y gcc gcc-c++ bison autoconf wget lrzsz \ 41 | && yum install -y make cmake libtool libtool-ltdl-devel \ 42 | && yum install -y libjpeg-devel libpng-devel freetype-devel gd-devel \ 43 | && yum install -y python-devel patch \ 44 | && yum install -y openssl openssl-devel ncurses-devel \ 45 | && yum install -y bzip2 bzip2-devel.x86_64 unzip zlib-devel \ 46 | && yum install -y libxml2 libxml2-devel \ 47 | && yum install -y curl-devel \ 48 | && yum install -y readline-devel \ 49 | && yum install -y pcre-devel \ 50 | && yum clean all 51 | 52 | # RUN wget -O /libmcrypt-2.5.8.tar.gz ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz \ 53 | RUN tar zxvf /libmcrypt-2.5.8.tar.gz \ 54 | && cd /libmcrypt-2.5.8 && ./configure && make && make install && cd - / && rm -rf /libmcrypt* \ 55 | && tar zxvf /mhash-0.9.9.9.tar.gz && cd mhash-0.9.9.9 && ./configure && make && make install && cd - / && rm -rf /mhash* \ 56 | && tar zxvf /mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8 && LD_LIBRARY_PATH=/usr/local/lib ./configure && make && make install && cd - / && rm -rf /mcrypt* 57 | 58 | RUN wget -O /php-${PHP_VERSION}.tar.bz2 "$PHP_URL" \ 59 | && tar jxvf /php-${PHP_VERSION}.tar.bz2 && cd php-${PHP_VERSION}/ \ 60 | && ./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --enable-inline-optimization --enable-opcache --enable-session --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pdo-sqlite --with-sqlite3 --with-gettext --enable-mbregex --enable-mbstring --enable-xml --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-xmlrpc --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-curlwrappers --with-zlib --enable-zip --with-bz2 --with-gd --enable-gd-native-ttf --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-readline \ 61 | && make && make install \ 62 | && cp php.ini-production php.ini \ 63 | && cp php.ini* /usr/local/php/etc/ \ 64 | && cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf \ 65 | && cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf \ 66 | && make clean && yum clean all && cd - && rm -rf /php-${PHP_VERSION}* \ 67 | && ln -sf /usr/local/php/bin/* /usr/bin/ \ 68 | && ln -sf /usr/local/php/sbin/* /usr/bin/ \ 69 | && sed -i "s/;date.timezone =/date.timezone =PRC/" /usr/local/php/etc/php.ini 70 | 71 | RUN useradd www 72 | 73 | #RUN wget -O /nginx-${NGINX_VERSION}.tar.gz http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \ 74 | RUN echo 'install nginx' \ 75 | && tar zxvf /nginx-${NGINX_VERSION}.tar.gz && cd nginx-${NGINX_VERSION} \ 76 | && ./configure \ 77 | --prefix=/usr/local/nginx \ 78 | --with-http_stub_status_module \ 79 | --with-http_ssl_module \ 80 | --with-http_realip_module \ 81 | --with-http_sub_module \ 82 | --with-http_gzip_static_module \ 83 | --with-pcre \ 84 | && make && make install \ 85 | && ln -sf /usr/local/nginx/sbin/nginx /usr/bin \ 86 | && make clean && yum clean all \ 87 | && cd ../ && rm -rf nginx-${NGINX_VERSION}* 88 | 89 | #RUN wget https://github.com/swoole/swoole-src/archive/swoole-src-${SWOOLE_VER}.tar.gz \ 90 | RUN echo 'install swoole' \ 91 | && tar xzf /${SWOOLE_VER}.tar.gz && cd swoole-src-${SWOOLE_VER} \ 92 | && phpize \ 93 | && ./configure \ 94 | && make && make install \ 95 | && echo "extension=swoole.so" >> "$PHP_INI_FILE" \ 96 | && cd ../ && rm -rf swoole-src-${SWOOLE_VER}* 97 | 98 | #RUN wget https://codeload.github.com/phpredis/phpredis/tar.gz/${PHPREDIS_VER}.tar.gz\ 99 | RUN echo 'install phpredis' \ 100 | && tar xzf /phpredis-${PHPREDIS_VER}.tar.gz && cd phpredis-${PHPREDIS_VER}/ \ 101 | && phpize \ 102 | && ./configure \ 103 | && make && make install \ 104 | && echo "extension=redis.so" >> "$PHP_INI_FILE" \ 105 | && cd ../ && rm -rf phpredis-${PHPREDIS_VER}* 106 | 107 | RUN echo 'install yar' \ 108 | && tar xzf /yar-${YAR_VER}.tgz && cd yar-${YAR_VER}/ \ 109 | && phpize \ 110 | && ./configure \ 111 | && make && make install \ 112 | && echo "extension=yar.so" >> "$PHP_INI_FILE" \ 113 | && cd ../ && rm -rf yar-${YAR_VER}* 114 | 115 | #RUN wget http://download.redis.io/releases/redis-${REDIS_VER}.tar.gz \ 116 | RUN echo 'install redis' \ 117 | && tar xzf /redis-${REDIS_VER}.tar.gz && cd redis-${REDIS_VER} \ 118 | && make \ 119 | && mkdir /usr/local/redis \ 120 | && cp redis.conf /usr/local/redis/ \ 121 | && cd src && cp redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis \ 122 | && cd / && rm -rf redis-${REDIS_VER}* 123 | 124 | ADD ./run.sh /run.sh 125 | RUN chmod 755 /run.sh 126 | 127 | CMD /run.sh && tail -f 128 | 129 | EXPOSE 80 130 | EXPOSE 9000 131 | 132 | #docker build -t php71-fpm-centos68 . 133 | 134 | -------------------------------------------------------------------------------- /php71-fpm-centos68/Dockerfile_online: -------------------------------------------------------------------------------- 1 | #FROM centos:centos6.8 2 | FROM daocloud.io/centos:6.8 3 | 4 | MAINTAINER yjc@52fhy.com 5 | 6 | # php 7 | ENV PHP_VERSION 7.1.12 8 | ENV PHP_URL="http://cn2.php.net/distributions/php-${PHP_VERSION}.tar.bz2" 9 | 10 | # nginx 11 | ENV NGINX_VERSION 1.12.2 12 | 13 | # redis 14 | ENV REDIS_VER 3.2.6 15 | 16 | # php-ext 17 | ENV SWOOLE_VER 1.10.1 18 | ENV PHPREDIS_VER 3.1.6 19 | ENV YAR_VER 2.0.4 20 | ENV PHP_INI_FILE="/usr/local/php/etc/php.ini" 21 | 22 | ENV TZ=Asia/Shanghai 23 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 24 | 25 | RUN yum install -y gcc gcc-c++ bison autoconf wget lrzsz \ 26 | && yum install -y make cmake libtool libtool-ltdl-devel \ 27 | && yum install -y libjpeg-devel libpng-devel freetype-devel gd-devel \ 28 | && yum install -y python-devel patch \ 29 | && yum install -y openssl openssl-devel ncurses-devel \ 30 | && yum install -y bzip2 bzip2-devel.x86_64 unzip zlib-devel \ 31 | && yum install -y libxml2 libxml2-devel \ 32 | && yum install -y curl-devel \ 33 | && yum install -y readline-devel \ 34 | && yum install -y pcre-devel \ 35 | && yum clean all 36 | 37 | RUN wget -O /libmcrypt-2.5.7.tar.gz ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz \ 38 | && wget -O /mcrypt-2.6.8.tar.gz https://jaist.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz \ 39 | && wget -O /mhash-0.9.9.9.tar.gz https://jaist.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz \ 40 | && tar zxvf /libmcrypt-2.5.7.tar.gz && cd /libmcrypt-2.5.7 && ./configure && make && make install && cd - / && rm -rf /libmcrypt* \ 41 | && tar zxvf /mhash-0.9.9.9.tar.gz && cd mhash-0.9.9.9 && ./configure && make && make install && cd - / && rm -rf /mhash* \ 42 | && tar zxvf /mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8 && LD_LIBRARY_PATH=/usr/local/lib ./configure && make && make install && cd - / && rm -rf /mcrypt* 43 | 44 | RUN wget -O /php-${PHP_VERSION}.tar.bz2 "$PHP_URL" \ 45 | && tar jxvf /php-${PHP_VERSION}.tar.bz2 && cd php-${PHP_VERSION}/ \ 46 | && ./configure --prefix=/usr/local/php --with-config-file-scan-dir=/usr/local/php/etc/ --enable-inline-optimization --enable-opcache --enable-session --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pdo-sqlite --with-sqlite3 --with-gettext --enable-mbregex --enable-mbstring --enable-xml --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-xmlrpc --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-curlwrappers --with-zlib --enable-zip --with-bz2 --with-gd --enable-gd-native-ttf --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-readline \ 47 | && make && make install \ 48 | && cp php.ini-production php.ini \ 49 | && cp php.ini* /usr/local/php/etc/ \ 50 | && cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf \ 51 | && cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf \ 52 | && make clean && yum clean all && cd - && rm -rf /php-${PHP_VERSION}* \ 53 | && ln -sf /usr/local/php/bin/* /usr/bin/ \ 54 | && ln -sf /usr/local/php/sbin/* /usr/bin/ \ 55 | && sed -i "s/;date.timezone =/date.timezone =PRC/" /usr/local/php/etc/php.ini 56 | 57 | RUN useradd www 58 | 59 | RUN wget -O /nginx-${NGINX_VERSION}.tar.gz http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \ 60 | && echo 'install nginx' \ 61 | && tar zxvf /nginx-${NGINX_VERSION}.tar.gz && cd nginx-${NGINX_VERSION} \ 62 | && ./configure \ 63 | --prefix=/usr/local/nginx \ 64 | --with-http_stub_status_module \ 65 | --with-http_ssl_module \ 66 | --with-http_realip_module \ 67 | --with-http_sub_module \ 68 | --with-http_gzip_static_module \ 69 | --with-pcre \ 70 | && make && make install \ 71 | && ln -sf /usr/local/nginx/sbin/nginx /usr/bin \ 72 | && make clean && yum clean all \ 73 | && cd ../ && rm -rf nginx-${NGINX_VERSION}* 74 | 75 | RUN wget http://download.redis.io/releases/redis-${REDIS_VER}.tar.gz \ 76 | && echo 'install redis' \ 77 | && tar xzf /redis-${REDIS_VER}.tar.gz && cd redis-${REDIS_VER} \ 78 | && make \ 79 | && mkdir /usr/local/redis \ 80 | && cp redis.conf /usr/local/redis/ \ 81 | && cd src && cp redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis \ 82 | && cd / && rm -rf redis-${REDIS_VER}* 83 | 84 | RUN wget http://pecl.php.net/get/redis-${PHPREDIS_VER}.tgz && tar xvf redis-${PHPREDIS_VER}.tgz && cd redis-${PHPREDIS_VER} && phpize && ./configure && make && make install && cd ../ && rm -rf redis-* 85 | 86 | RUN wget http://pecl.php.net/get/swoole-${SWOOLE_VER}.tgz && tar xvf swoole-${SWOOLE_VER}.tgz && cd swoole-${SWOOLE_VER} && phpize && ./configure && make && make install && cd ../ && rm -rf swoole-* 87 | 88 | RUN wget http://pecl.php.net/get/yar-${YAR_VER}.tgz && tar xvf yar-${YAR_VER}.tgz && cd yar-${YAR_VER} && phpize && ./configure && make && make install && cd ../ && rm -rf yar-* 89 | 90 | RUN echo "extension=redis.so" >> "$PHP_INI_FILE" && \ 91 | echo "extension=swoole.so" >> "$PHP_INI_FILE" && \ 92 | echo "extension=yar.so" >> "$PHP_INI_FILE" 93 | 94 | ADD ./run.sh /run.sh 95 | RUN chmod 755 /run.sh 96 | 97 | CMD /run.sh && tail -f 98 | 99 | EXPOSE 80 100 | EXPOSE 9000 101 | 102 | #docker build -t php71-fpm-centos68 . 103 | 104 | -------------------------------------------------------------------------------- /php71-fpm-centos68/README.md: -------------------------------------------------------------------------------- 1 | 2 | # php71-fpm-centos68 3 | 4 | 基于 centos:6.8 镜像。 5 | 6 | php7.1的开发环境。包含: 7 | 8 | - CentOS 6.8 9 | - PHP 7.1.12 10 | - php-fpm 11 | - Nginx 1.12.2 12 | - Redis 3.2.6 13 | 14 | 包含的PHP附加扩展: 15 | 16 | - swoole 1.10.1 17 | - phpredis 3.0.0 18 | - yar 2.0.2 19 | 20 | 相关目录: 21 | 22 | - php根目录:/usr/local/php/ 23 | - php可执行程序目录:/usr/local/php/bin/、/usr/local/php/sbin/ 24 | - php配置目录:/usr/local/php/etc/ 25 | - nginx根目录:/usr/local/nginx/ 26 | - nginx可执行程序目录:/usr/local/nginx/sbin/ 27 | - nginx配置目录:/usr/local/nginx/conf/ 28 | 29 | ## 如何使用 30 | 31 | 1、首次使用需要先编译成镜像: 32 | 33 | ``` bash 34 | docker build -t php71-fpm-centos68 . 35 | ``` 36 | 或者执行bulid.sh。 37 | 38 | 编译需要30分钟左右。实际视机器性能而定。 39 | 40 | 2、编译完成后可以创建容器了。默认会自动启动Nginx、php-fpm服务: 41 | 42 | ``` bash 43 | docker run -d --name yphp -p 80:80 -p 9000:9000 -v /work/:/work/ php71-fpm-centos68 44 | docker ps 45 | ``` 46 | 47 | 其中`-v /work/:/work/`指定将本机的`/work`目录挂载到容器内的`/work`目录。建议挂载。本机的`/work`目录必须存在。 48 | 49 | `docker ps`看到的内容: 50 | 51 | ``` 52 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 53 | db13127cb76b php71-fpm-centos68 "/run.sh" 1 second ago Up 1 second 0.0.0.0:80->80/tcp, 0.0.0.0:9000->9000/tcp yphp 54 | ``` 55 | 表名容器正则运行。如果`STATUS`是Exit(1)则说明容器异常退出,如果Exit(0)说明容器只执行了命令就立即退出了。 56 | 可以使用`docker logs db13127cb76b` 查看容器具体退出情况。db13127cb76b是某个容器ID(CONTAINER ID)。 57 | 如果是Exit(0)可能是没有维持住后台运行,建议在命令加入`tail -f`这种可以一直运行的命令。 58 | 59 | 3、如果想自行配置php.ini、nginx.conf,可以将配置目录映射到宿主机: 60 | ``` bash 61 | docker run -d --name yphp -p 80:80 -p 9000:9000 \ 62 | -v /work/:/work/ \ 63 | -v "/work/yphp/php/etc/":/usr/local/php/etc/ \ 64 | -v "/work/yphp/nginx/conf/":/usr/local/nginx/conf/ \ 65 | -v "/work/yphp/nginx/logs/":/usr/local/nginx/logs/ \ 66 | php71-fpm-centos68 67 | ``` 68 | 69 | 其中`/work/yphp`是本地宿主机的一个目录,里面包含php和nginx的配置,目录结构: 70 | ``` 71 | /work/yphp/ 72 | |--nginx 73 | |--conf 74 | |--nginx.conf 75 | |--vhost 76 | |--php 77 | |--etc 78 | |--php.ini 79 | |--php-fpm.d 80 | |--www.conf 81 | ``` 82 | 如果不想对每个配置都进行映射,也可以指定需要映射的配置文件: 83 | ```bash 84 | docker run -d --name yphp -p 80:80 -p 9000:9000 \ 85 | -v /work/:/work/ \ 86 | -v "/work/yphp/php/etc/php.ini":/usr/local/php/etc/php.ini \ 87 | -v "/work/yphp/nginx/conf/nginx.conf":/usr/local/nginx/conf/nginx.conf \ 88 | -v "/work/yphp/nginx/conf/vhost/":/usr/local/nginx/conf/vhost/ \ 89 | -v "/work/yphp/nginx/logs/":/usr/local/nginx/logs/ \ 90 | php71-fpm-centos68 91 | ``` 92 | 93 | >注意:由于这里覆盖了php.ini,所以想要开启第三方扩展的话,想要提前在php.ini里追加: 94 | ``` 95 | extension=redis.so 96 | extension=swoole.so 97 | extension=yar.so 98 | ``` 99 | 100 | 或者启动后追加然后重启容器里的php-fpm: 101 | ``` bash 102 | docker exec 容器ID killall php-fpm 103 | docker exec 容器ID php-fpm 104 | ``` 105 | 106 | 4、如果不需要一开始就运行服务,想进入容器自行启动,可以直接进入容器: 107 | ``` bash 108 | docker run -it --name yphp -v /work/:/work/ php71-fpm-centos68 /bin/bash 109 | ``` 110 | 111 | 退出容器使用exit。 112 | 113 | 5、想对当前容器打包为镜像,方便后续使用:(需要先停止容器) 114 | ``` bash 115 | # 从容器生成镜像 116 | # -m 加一些改动信息,-a 指定作者相关信息,db13127cb76b这一串为容器id,再后面为新镜像的名字 117 | docker commit -m "create images" -a "52fhy" db13127cb76b php71-fpm-centos68:yphp_v1 118 | 119 | # 导出镜像 120 | docker save -o yphp.tar php71-fpm-centos68:yphp_v1 121 | 122 | # 导入镜像 123 | docker load --input yphp.tar 124 | ``` 125 | 126 | 导出的镜像可以压缩以节约空间。 127 | 128 | 6、增加PHP扩展 129 | 130 | 有下面几种方法,只要编译出了.so文件就简单了。以演示xdebug为例: 131 | 132 | 1) 如果已经编译好了.so文件,直接复制到挂载目录(例如`/work`)。使用`docker exec -it 容器ID /bin/bash`进入容器,通过`php-config`可以看到扩展所在目录,复制到该目录,修改php.ini,追加`zend_extension=xdebug.so`,重启php-fpm即可。 133 | 134 | >注:一般扩展都是`extension=xxx.so`,xdebug特殊。 135 | 136 | 2) 需要先进入容器,使用`pecl install xdebug`自动编译生成.so文件。会自动复制到扩展目录。修改php.ini重启php-fpm生效。 137 | 138 | 3) pecl如果提示找不到该扩展,则使用源码编译。例如: 139 | ``` bash 140 | git clone https://github.com/xdebug/xdebug.git 141 | cd xdebug/ 142 | phpize 143 | ./configure 144 | make 145 | make install 146 | ``` 147 | 148 | 一般可以在pecl.php.net找到源码。例如:http://pecl.php.net/package/xdebug 。编译方法差不多: 149 | ``` bash 150 | wget http://pecl.php.net/get/xdebug-2.5.5.tgz \ 151 | && tar xzf xdebug-2.5.5.tgz && cd xdebug-2.5.5/ \ 152 | && phpize \ 153 | && ./configure \ 154 | && make && make install 155 | ``` 156 | 157 | 158 | 159 | 160 | -------------------------------------------------------------------------------- /php71-fpm-centos68/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cp -rf ../php70-fpm-centos68/*gz ./ 3 | docker build -t php71-fpm-centos68 . 4 | -------------------------------------------------------------------------------- /php71-fpm-centos68/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | nginx 3 | /usr/local/php/sbin/php-fpm 4 | ps -ef 5 | tail -f /usr/local/nginx/logs/access.log -------------------------------------------------------------------------------- /php71-fpm-ubuntu1604-phalcon/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM daocloud.io/ubuntu:16.04 2 | 3 | MAINTAINER linuxidc "yujc@52fhy.com" 4 | 5 | ENV PHP_INI /etc/php/7.1/fpm/php.ini 6 | ENV NGINX_VERSION 1.12.2 7 | 8 | RUN apt-get -y update && apt-get install -y language-pack-en-base && locale-gen en_US.UTF-8 && \ 9 | apt-get -y install software-properties-common && LC_ALL=en_US.UTF-8 add-apt-repository -y ppa:ondrej/php && \ 10 | apt-get -y update 11 | 12 | ENV TZ=Asia/Shanghai 13 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && apt-get -y install tzdata && dpkg-reconfigure -f noninteractive tzdata 14 | 15 | RUN apt-get -y install vim git wget curl zlib1g-dev 16 | RUN apt-get -y install php7.1 php7.1-pdo php7.1-pdo-mysql php7.1-mysql php7.1-mysqli \ 17 | php7.1-fpm php7.1-curl php7.1-xml php7.1-mcrypt php7.1-json php7.1-gd php7.1-mbstring php7.1-sockets \ 18 | php7.1-memcache php7.1-memcached php7.1-redis php7.1-xdebug php7.1-yac php7.1-phalcon \ 19 | php7.1-msgpack php7.1-tidy php7.1-propro php7.1-mongodb 20 | 21 | RUN apt-get -y install php7.1-dev 22 | ENV PHP_CLI_INI /etc/php/7.1/cli/php.ini 23 | RUN mv ${PHP_CLI_INI} ${PHP_CLI_INI}.bak && ln -s ${PHP_INI} ${PHP_CLI_INI} 24 | 25 | RUN pecl install seaslog && \ 26 | pecl install swoole && \ 27 | echo "extension=seaslog.so" > ${PHP_INI} && \ 28 | echo "extension=swoole.so" > ${PHP_INI} 29 | 30 | RUN wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz && \ 31 | tar -zxvf nginx-${NGINX_VERSION}.tar.gz && cd nginx-${NGINX_VERSION} && \ 32 | ./configure \ 33 | --prefix=/usr/local/nginx \ 34 | --with-http_stub_status_module \ 35 | --with-http_realip_module \ 36 | --with-http_sub_module \ 37 | --with-pcre && \ 38 | make && make install && \ 39 | ln -sf /usr/local/nginx/sbin/nginx /usr/sbin && mkdir -p /run/php && cd - 40 | 41 | ADD ./run.sh /run.sh 42 | RUN chmod 755 /run.sh 43 | 44 | CMD /run.sh && tail -f 45 | 46 | EXPOSE 80 47 | EXPOSE 9000 48 | 49 | 50 | # docker build -t php71-fpm-ubuntu1604-phalcon . 51 | -------------------------------------------------------------------------------- /php71-fpm-ubuntu1604-phalcon/docker-compose.yml: -------------------------------------------------------------------------------- 1 | # development.yml 2 | version: '2' 3 | services: 4 | php-fpm: 5 | image: php71-fpm-ubuntu1604-phalcon:1.0 6 | restart: always 7 | volumes: 8 | - /work/:/work/ 9 | #- /work/dockerp/php71-fpm/nginx/conf/nginx.conf:/usr/local/nginx/conf/nginx.conf 10 | #- /work/dockerp/php71-fpm/nginx/conf/vhosts/:/usr/local/nginx/conf/vhosts/ 11 | #- /work/dockerp/php71-fpm/nginx/data/:/var/log/nginx/ 12 | ports: 13 | - 9001:9000 14 | - 8002:80 15 | command: ps -ef -------------------------------------------------------------------------------- /php71-fpm-ubuntu1604-phalcon/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | nginx && php-fpm7.1 && ps -ef 3 | -------------------------------------------------------------------------------- /redis/README.md: -------------------------------------------------------------------------------- 1 | # Redis 2 | 3 | 仓库官网:https://registry.hub.docker.com/_/redis/ 4 | 5 | 获取: 6 | ``` 7 | docker pull redis 8 | docker pull daocloud.io/library/redis 9 | docker pull hub.c.163.com/library/redis 10 | ``` 11 | 12 | 版本: 13 | 14 | - 3.2.9 (latest) 15 | - 3.2.9-alpine 16 | - 3.2.0 17 | - 3.2.0-alpine 18 | - 3.0 19 | - 3.0-alpine 20 | - 4.0.0 21 | - 4.0.0-alpine 22 | - 2.8.6 23 | - ... 24 | 25 | 26 | Redis 是一个开源,基于内存的高性能 key-Value 数据库, 可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs 等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过 Redis Sentinel 提供高可用,通过 Redis Cluster 提供自动分区。 27 | 28 | ## 启动一个Redis实例 29 | ``` 30 | $ docker run --name some-redis -d redis 31 | ``` 32 | 33 | 这个镜像包含EXPOSE 6379 (Redis默认端口),所以可以通过link容器的方式访问Redis。 34 | 35 | ## 启动Redis持久化功能 36 | ``` 37 | $ docker run --name some-redis -d redis redis-server --appendonly yes 38 | ``` 39 | 40 | 当开启了Redis的持久化功能,Redis会将数据储存到 VOLUME /data,我们可以通过 `--volumes-from some-volume-container` 或者`-v /docker/host/dir:/data`参数,将数据保存到主机,具体参考https://docs.docker.com/engine/tutorials/dockervolumes/ 。 41 | 42 | 关于更多Redis持久化功能请参考 http://redis.io/topics/persistence 43 | 44 | ## 从另一个容器连接到Redis 45 | ``` 46 | $ docker run --name some-app --link some-redis:redis -d application-that-uses-redis 47 | ``` 48 | 49 | ## 通过redis-cli 50 | ``` 51 | $ docker run -it --link some-redis:redis --rm redis redis-cli -h redis -p 6379 52 | ``` 53 | 54 | ## 使用redis.conf配置文件 55 | 56 | 可以创建[Dockerfile](https://docs.docker.com/engine/reference/builder/)包含redis.conf 例如 57 | ``` 58 | FROM redis 59 | COPY redis.conf /usr/local/etc/redis/redis.conf 60 | CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ] 61 | ``` 62 | 63 | 也可以通过docker run指定redis.conf 64 | ``` 65 | $ docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf 66 | ``` 67 | --------------------------------------------------------------------------------