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

Laravel v11项目Docker Compose构建失败:包安装及网络问题求助

解决方案:Docker构建Laravel镜像时apt源解析失败

问题核心

构建PHP镜像过程中,容器无法解析deb.debian.org域名,导致apt-get update失败,进而找不到需要安装的系统包。

具体解决步骤

1. 排查宿主机网络连通性

先确认宿主机自身能正常访问Debian源:

ping deb.debian.org
nslookup deb.debian.org

如果宿主机也无法解析,说明是本地网络或DNS问题,先将宿主机DNS切换为公共DNS(如8.8.8.8、114.114.114.114)。

2. 修改Dockerfile,替换为国内Debian源

将官方源替换为国内镜像源(如阿里云),同时优化构建步骤减小镜像体积:

FROM php:8.3-fpm

# 替换为阿里云Debian源
RUN echo "deb http://mirrors.aliyun.com/debian/ bookworm main contrib non-free non-free-firmware" > /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \
    echo "deb http://mirrors.aliyun.com/debian-security/ bookworm-security main contrib non-free non-free-firmware" >> /etc/apt/sources.list

RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    unzip \
    libpq-dev \
    libonig-dev \
    libssl-dev \
    libxml2-dev \
    libcurl4-openssl-dev \
    libicu-dev \
    libzip-dev \
    nodejs \
    npm \
    && docker-php-ext-install -j$(nproc) \
    pdo_pgsql \
    pgsql \
    opcache \
    intl \
    zip \
    bcmath \
    # 清理apt缓存减少镜像体积
    && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

WORKDIR /var/www/html

# 先复制依赖文件,缓存composer安装层
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader

# 最后复制项目代码
COPY . .

3. 配置Docker Daemon全局DNS

若容器网络本身存在DNS解析问题,修改Docker daemon的全局DNS配置:

  1. 编辑(或创建)/etc/docker/daemon.json:
{
  "dns": ["8.8.8.8", "114.114.114.114"]
}
  1. 重启Docker服务:
systemctl restart docker

4. 临时构建时指定DNS(应急方案)

如果上述方法无效,可在Dockerfile的apt-get update前临时指定DNS:

RUN echo "nameserver 8.8.8.8" > /etc/resolv.conf && \
    apt-get update && apt-get install -y --no-install-recommends ...

额外优化建议

  • Node.js和npm建议用官方源安装,避免系统源版本过旧:
    RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
        apt-get install -y nodejs
    
  • Laravel部署时,可在composer install后执行php artisan optimize:clear完成项目优化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:55:15