一、序
dockerhub 官网提供了 php7.4 fpm 官方镜像(参见 https://hub.docker.com/_/php/tags?page=1&name=7.4-fpm-alpine),其中有 alpine 版本只要几十兆,但这样的镜像基础工具很少,项目内需安装一些额外扩展还是很费劲,本着简单实用原则,自己编写了下述 Dockerfile 便于快速创建出基于 centos 系统的 php docker 环境并支持 ssh 登录
二、start.sh
代码语言:javascript复制#!/bin/bash
# 启动 php-fpm
php-fpm
# 启动SSH服务
/usr/sbin/sshd -D
三、Dockerfile
代码语言:javascript复制# 使用 CentOS 7 作为基础镜像
FROM centos:7
# 复制文件进容器
COPY start.sh /start.sh
# 更换 CentOS 镜像源为腾讯云,清理缓存并重建,加快后续 yum 命令
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup &&
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.cloud.tencent.com/repo/centos7_base.repo &&
yum clean all &&
yum makecache fast
# 安装 EPEL 源,导入 remi 源 GPG key 用于 yum 安装 remi-php74
RUN yum install -y https://mirrors.cloud.tencent.com/epel/epel-release-latest-7.noarch.rpm &&
rpm --import https://rpms.remirepo.net/RPM-GPG-KEY-remi &&
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm &&
# 安装 工具
yum install -y wget yum-utils net-tools vim openssh-server passwd &&
# 启用 remi-php74 源
yum-config-manager --enable remi-php74 &&
# 安装 PHP74 及相关扩展
yum install -y php php-fpm php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-redis php-opcache &&
# 系统时区设置
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&
# 设置 root ssh 登录,安装 net-tools 和 vim
ssh-keygen -A &&
sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config &&
echo "root:root" | chpasswd &&
# 创建 php-fpm pid 文件目录,调整 php-fpm 来源客户端限制
mkdir /run/php-fpm &&
sed -i 's/^listen.allowed_clients/;listen.allowed_clients/g' /etc/php-fpm.d/www.conf &&
sed -i 's/^listen = 127.0.0.1:9000/listen = 0.0.0.0:9000/g' /etc/php-fpm.d/www.conf &&
# vi 中文乱码
echo "alias vi='vim'" >>/root/.bashrc &&
echo "set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1" >>/root/.vimrc &&
echo "set enc=utf8" >>/root/.vimrc &&
echo "set fencs=utf8,gbk,gb2312,gb18030" >>/root/.vimrc &&
# 启动脚本权限调整
chmod 755 /start.sh
EXPOSE 9000 22
# 启动
CMD ["/start.sh"]
# 手动打镜像
# docker build -t centos_php74:test1 Dockerfile .
# 手动启动挂到后台
# docker run -d -p 2222:22 xxx
# 手动启动一次性容器进行测试
# docker run --rm -p 2222:22 -it xxx /bin/bash
# 服务端容器重建的后,会导致客户端 ssh 登录失败,可在客户端使用下述清除本地 known_hosts
# ssh-keygen -R CONTAINER_IP
以上,若有疑问可邮件沟通~