Podman 本身不内置 Composer,但通过 podman-compose 运行 PHP 容器时,需同步配置两层加速:一是修改 WSL2 中 /etc/containers/registries.conf 使镜像拉取走国内源,二是容器内通过 COMPOSER_REPO_PACKAGIST 环境变量或 composer config -g 设置 Packagist 国内镜像源(如阿里云或腾讯云),并确保基础镜像已安装 curl/openssl;同时确认 podman machine 处于 Running 状态。

Podman 本身不内置 composer,但如果你指的是用 podman-compose 替代 docker-compose,并在容器内运行 PHP 应用(含 Composer 工具),那么核心问题不是“Composer 在 Podman 中怎么配镜像”,而是:如何让 podman-compose 拉取的镜像走国内源,以及容器内执行 composer install 时加速包下载。
podman-compose 拉取镜像不走国内源?改 registries.conf 才生效
很多人以为在 docker-compose.yml 里写 image: php:8.2-apache,然后只改 Podman Desktop 图形界面里的 registry 就能加速——其实不行。Podman Desktop 的 UI 配置只影响 GUI 操作和部分 CLI 命令,podman-compose 默认仍读取 WSL2 内部的 /etc/containers/registries.conf。
- 必须进入 WSL2 环境:
wsl(或wsl -d <distro-name>) - 编辑配置文件:
sudo nano /etc/containers/registries.conf - 确认存在
unqualified-search-registries = ["docker.io"],且至少有一条[[registry]]匹配prefix = "docker.io"并指向国内地址,例如:location = "docker.mirrors.ustc.edu.cn" - 保存后无需重启服务,但需确保
podman-compose是在该 WSL2 实例中执行的(不是 Windows 命令行直接调用)
容器内 composer install 还很慢?别依赖镜像源,改 Composer 自身配置
即使基础镜像(如 php:8.2)是从国内源拉下来的,容器内运行 composer install 时,默认仍会访问 packagist.org(境外),导致卡住或超时。
- 在
docker-compose.yml的services下,为 PHP 容器添加环境变量:COMPOSER_REPO_PACKAGIST=https://packagist.phpcomposer.com(国内镜像站) - 或者更稳妥的方式:挂载自定义
composer.json或提前在构建阶段执行:composer config -g repo.packagist composer https://packagist.phpcomposer.com - 注意:PHP 容器必须已安装
curl和openssl,否则composer无法验证 HTTPS 证书 - 如果用的是 Alpine 镜像,记得加
apk add --no-cache curl openssl到Dockerfile
podman-compose 启动失败提示 “connection refused”?检查 machine 状态
Windows/WSL2 下,podman-compose 实际依赖 podman machine 提供的虚拟机环境。如果没启动或状态异常,就会报连接错误,而不是镜像拉取慢这类表层问题。
- 先运行:
podman machine list,确认状态是Running - 如果不是,执行:
podman machine stop && podman machine start - 若提示权限错误,不要用 Windows PowerShell 直接跑
podman-compose,务必进 WSL2 终端再执行 -
podman-compose不会自动继承 Windows 的代理设置,WSL2 内需单独配置http_proxy(如有企业代理)
真正卡点不在 Composer 命令本身,而在三层叠加:WSL2 的镜像源配置、容器内 Packagist 源切换、以及 podman machine 的运行态。少一层,就可能白等十分钟。


















