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

Laravel 7构建Docker容器时docker-php-ext-install返回exit code:1如何解决

问题原因

  • 缺少PHP扩展编译依赖:docker-php-ext-install安装pdo_mysql、mbstring扩展时,需要依赖libonig-dev、default-mysql-client等系统库,你原Dockerfile的apt安装列表未包含这些依赖,导致扩展安装失败返回错误码1。
  • 错误使用sudo命令:官方php:7.4镜像默认没有预装sudo工具,且构建过程默认以root用户执行,不需要加sudo执行composer命令,会直接触发命令不存在的错误。
  • MySQL初始化配置冲突:docker-compose中db服务的环境变量配置了MYSQL_USER=root,而MySQL镜像默认已存在root用户,重复创建会导致数据库初始化失败,后续服务启动也会受影响。

修复后的配置

Dockerfile

FROM php:7.4

RUN apt-get update -y && apt-get install -y \
    openssl \
    zip \
    unzip \
    git \
    libonig-dev \
    libpng-dev \
    libzip-dev \
    default-mysql-client

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN docker-php-ext-install pdo_mysql mbstring zip

WORKDIR /app
COPY . .
RUN composer install

CMD php artisan serve --host=0.0.0.0
EXPOSE 8000

docker-compose.yml(仅修改db服务的environment段)

db:
  container_name: admin_db
  image: mysql:5.7.22
  restart: always
  environment:
    MYSQL_DATABASE: admin
    MYSQL_ROOT_PASSWORD: root
  volumes:
    - .dbdata:/var/lib/mysql
  ports:
    - 33066:3306
  networks:
    - app

操作步骤

  1. 替换本地的Dockerfile和docker-compose.yml对应内容
  2. 执行docker-compose build --no-cache backend清除旧构建缓存,重新构建后端镜像
  3. 构建完成后执行docker-compose up -d即可启动所有服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:45:06