You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Docker Compose编排的多容器使用相同PHP版本

官方的codeception/codeception镜像默认内置PHP7.4,所以才会出现版本不匹配的问题,以下两个方案都可以解决需求:

方案1:复用现有PHP容器运行Codeception(推荐)

不需要额外维护容器,完全保证PHP版本和依赖一致,资源占用最低。

  • 在你的PHP容器Dockerfile(路径./dockerfiles/php)中增加Codeception安装命令:
# 新增以下内容到原有php Dockerfile末尾
RUN curl -Ls https://codeception.com/codecept.phar -o /usr/local/bin/codecept && chmod +x /usr/local/bin/codecept
  • 重新构建php容器:docker-compose up -d --build php
  • 后续执行测试直接在php容器中运行命令即可:docker exec php codecept run

你可以选择直接删除原docker-compose.yml中的codecept服务,不需要单独部署codecept容器。

方案2:自定义Codeception容器匹配PHP8版本

如果需要保留单独的Codeception服务,按以下步骤修改:

  1. 替换docker-compose.yml中的codecept服务配置:
codecept:
  build:
    context: ./
    dockerfile: ./dockerfiles/codecept
  container_name: codeception
  depends_on:
    - web
  volumes:
    - ./html:/project
  networks:
    - my-network
  entrypoint: ["codecept"]
  1. 新建./dockerfiles/codecept文件,写入以下内容:
# 基础镜像使用和你php服务完全一致的PHP版本
FROM php:8.0.10-cli

# 安装依赖扩展,可根据你的项目需求增减
RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    zip \
    unzip \
    && docker-php-ext-install pdo_mysql mbstring bcmath

# 安装Composer(如果你的测试依赖Composer包)
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

# 安装最新版Codeception
RUN curl -Ls https://codeception.com/codecept.phar -o /usr/local/bin/codecept && chmod +x /usr/local/bin/codecept

WORKDIR /project
  1. 重新构建启动服务:docker-compose up -d --build codecept

不建议跨容器调用PHP运行环境,这种实现需要挂载Docker套接字或者配置SSH互通,配置复杂且有安全风险,优先使用上面两个方案。

内容的提问来源于stack exchange,提问作者PhilipCodeX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:15:04