使用Docker为PHP7.4环境配置memcached失败,如何解决?
部署memcached的调整步骤
1. 修改docker.yml配置
首先更新webserver服务的links配置,新增memcached服务关联:
webserver: # 原有其他配置不变 links: - database - memcached # 新增这行
再在services节点下新增memcached服务配置:
memcached: container_name: '${COMPOSE_PROJECT_NAME}-memcached' image: memcached:alpine restart: always ports: - "127.0.0.1:${HOST_MACHINE_MEMCACHED_PORT}:11211"
2. 编写PHP7.4对应的Dockerfile
在你./bin/php7.4/目录下的空Dockerfile中补充如下内容,安装PHP的memcached扩展:
# 基于官方PHP7.4 Apache镜像,如果你原有基础镜像有自定义内容,保留基础镜像配置即可 FROM php:7.4-apache # 安装memcached扩展依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ libmemcached-dev \ zlib1g-dev \ && rm -rf /var/lib/apt/lists/* # 安装适配PHP7.4的memcached扩展 RUN pecl install memcached-3.2.0 \ && docker-php-ext-enable memcached # 如果你原有环境需要其他PHP扩展,比如mysqli、pdo_mysql,可以在这里补充安装 RUN docker-php-ext-install mysqli pdo_mysql
3. 补充环境变量
在你的项目.env配置文件中新增memcached端口配置:
HOST_MACHINE_MEMCACHED_PORT=11211
4. 重启容器生效
执行命令重建启动容器:docker-compose down && docker-compose up -d --build
5. 验证配置
- 新建PHP测试文件输出
phpinfo(),搜索是否存在memcached扩展项 - 测试服务连接:
<?php $mem = new Memcached(); // Docker容器内部直接用memcached服务名作为连接地址,端口默认11211 $mem->addServer('memcached', 11211); $mem->set('test', '部署成功', 60); echo $mem->get('test');
如果输出部署成功即配置正常。
内容的提问来源于stack exchange,提问作者Usman Khan
相关产品推荐
相关产品推荐

