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

Docker部署CodeIgniter4遇Composer未找到及SSL证书问题求助

Docker部署CodeIgniter4:composer找不到与SSL证书错误解决

问题背景

Windows下用Docker Desktop部署CodeIgniter4,编写Dockerfile后执行docker-compose up -d,先后遇到两个问题:

  • 首次执行到第5步报错composer: not found
  • 添加COPY composer镜像的步骤后,出现curl SSL证书错误:无法获取本地颁发证书

原Dockerfile代码

FROM php:8.1.0-apache

RUN apt-get update \
    && apt-get install -y nano zip unzip git libicu-dev \
    && docker-php-ext-configure intl \
    && docker-php-ext-install intl \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer

WORKDIR /var/www/html

RUN composer create-project codeigniter4/appstarter app --prefer-dist --stability=stable --no-progress --no-interaction

RUN chown -R www-data:www-data /var/www/html \
    && composer self-update

COPY codeigniter.conf /etc/apache2/sites-available/
RUN a2ensite codeigniter.conf \
    && service apache2 reload || true

RUN cd /etc/apache2/sites-available \
    && a2dissite 000-default.conf \
    && service apache2 reload || true

EXPOSE 80

首次报错日志

=> => sha256:4b3248f455fea3a6577a6aadd5530530b0972512e5a13f7bbe455c5f3320c8da 245B / 245B 49.5s
=> => sha256:3e27fc6740deae2a2a872cfc43f56e9742d1b9c190ad7edae55cea58a58877fa 895B / 895B 50.1s
=> => extracting sha256:2c23b6beb07ab1b78af3929ff31a2ec34ece94ac611be50a32d54406e925b64f 7.1s
=> => extracting sha256:9874148cff9ac18f61ee23d041488694c002bf082e32d004232055b99e2f705f 0.0s
=> => extracting sha256:52defac986292394d78237bb5d79c9b45c18bcd31ba38ccf9a1c9fab6ee955b7 1.1s
=> => extracting sha256:585eed6f53992820a6d18df110b45f7a75a2d8b94fc827978b09e444ee3985dd 0.0s
=> => extracting sha256:aa83ee0498fff0d0660501ab49e185d11ce4952ccd2f64a982e2909f21163bcd 0.0s
=> => extracting sha256:ca8554b7b29aca11f30babbc12ca6b112261341f031b57b119c78e2137cd1d9b 0.2s
=> => extracting sha256:e2ce73d77ea79e033f9232d301bb900d4dc675733da9f16917eedd1d9466df20 0.0s
=> => extracting sha256:bbe0962a8cbafcf37eab4d505d3d1dc8b9f4c390df93f7841bfbe66c3d395f1c 1.0s
=> => extracting sha256:acfda1f63e3484bd437cf3611e53cae2b5ae5e72a3b417f886eb768f0ca09663 0.0s
=> => extracting sha256:4b3248f455fea3a6577a6aadd5530530b0972512e5a13f7bbe455c5f3320c8da 0.0s
=> => extracting sha256:3e27fc6740deae2a2a872cfc43f56e9742d1b9c190ad7edae55cea58a58877fa 0.0s
=> [db] exporting to image 0.1s
=> => exporting layers 0.0s
=> => writing image sha256:6eff5dd669da5c4558cf63f3ee935ed0b215245a24fdce3fc133c4c3e84b3665 0.0s
=> => naming to docker.io/library/codeigniter-project-db 0.0s
=> [web 2/9] RUN apt-get update && apt-get install -y nano zip unzip git libicu-dev && docker-php-ext-c 72.2s
=> [web 3/9] RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer 0.7s
=> [web 4/9] WORKDIR /var/www/html 0.1s
=> ERROR [web 5/9] RUN composer create-project codeigniter4/appstarter app --prefer-dist --stability=stable --no 0.4s
------
> [web 5/9] RUN composer create-project codeigniter4/appstarter app --prefer-dist --stability=stable --no-progress --no-interaction:
0.368 /bin/sh: 1: composer: not found
------
failed to solve: process "/bin/sh -c composer create-project codeigniter4/appstarter app --prefer-dist --stability=stable --no-progress --no-interaction" did not complete successfully: exit code: 127

二次报错日志

...
=> CACHED [web stage-0  2/10] RUN apt-get update     && apt-get install -y nano zip unzip git libicu-dev     &&    0.0s 
=> CACHED [web stage-0  3/10] RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --f  0.0s 
=> CACHED [web stage-0  4/10] WORKDIR /var/www/html                                                0.0s 
=> [web stage-0  5/10] COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer                 0.1s 
=> ERROR [web stage-0  6/10] RUN composer create-project codeigniter4/appstarter app --prefer-dist --stability=s  1.9s
------ 
> [web stage-0  6/10] RUN composer create-project codeigniter4/appstarter app --prefer-dist --stability=stable --no-progress --no-interaction:
1.091 Composer plugins have been disabled for safety in this non-interactive session.
1.091 Set COMPOSER_ALLOW_SUPERUSER=1 if you want to allow plugins to run as root/super user.
1.091 Do not run Composer as root/super user! See https://getcomposer.org/root for details
1.105 Creating a "codeigniter4/appstarter" project at "./app"
1.842 Plugins have been disabled automatically as you are running as root, this may be the cause of the following exception. See also https://getcomposer.org/root
1.853
1.868 In CurlDownloader.php line 371:
1.868
1.868   curl error 60 while downloading https://repo.packagist.org/packages.json: S
1.868   SL certificate problem: unable to get local issuer certificate
1.869
1.869
1.869 create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--no-audit] [--audit-format AUDIT-FORMAT] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--ask] [--] [<package> [<directory> [<version>]]]
1.869
------
failed to solve: process "/bin/sh -c composer create-project codeigniter4/appstarter app --prefer-dist --stability=stable --no-progress --no-interaction" did not complete successfully: exit code: 100

问题解决与修正后的Dockerfile

问题1:composer找不到的原因与解决

通过curl安装composer到/usr/bin可能存在路径不生效或安装失败的情况,直接从官方composer镜像复制二进制文件更可靠,同时确保路径在$PATH中。

问题2:SSL证书错误的原因与解决

容器基础镜像缺少根CA证书,导致无法验证HTTPS站点,需要安装ca-certificates包补充证书链。

修正后的完整Dockerfile

# 使用指定版本的PHP-Apache镜像
FROM php:8.1.0-apache

# 安装依赖:添加ca-certificates解决SSL证书问题,保留原有工具
RUN apt-get update \
    && apt-get install -y nano zip unzip git libicu-dev ca-certificates \
    && docker-php-ext-configure intl \
    && docker-php-ext-install intl \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 从官方composer镜像复制已编译的composer,避免curl安装的问题
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer

# 设置工作目录
WORKDIR /var/www/html

# 创建CodeIgniter4项目,添加COMPOSER_ALLOW_SUPERUSER避免root警告
RUN COMPOSER_ALLOW_SUPERUSER=1 composer create-project codeigniter4/appstarter app --prefer-dist --stability=stable --no-progress --no-interaction

# 设置目录权限
RUN chown -R www-data:www-data /var/www/html

# 复制并启用站点配置,禁用默认站点
COPY codeigniter.conf /etc/apache2/sites-available/
RUN a2ensite codeigniter.conf \
    && a2dissite 000-default.conf \
    && service apache2 reload || true

# 暴露80端口
EXPOSE 80

关键修改点说明

  1. 安装ca-certificates包,解决SSL证书验证问题
  2. 替换curl安装composer的方式,改用COPY --from=composer:latest直接复制官方二进制文件
  3. 执行composer create-project时添加COMPOSER_ALLOW_SUPERUSER=1,避免root用户的警告和插件禁用问题
  4. 合并站点配置的RUN命令,减少镜像层数量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:09:53