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

docker build加--add-host成功,docker-compose用extra_hosts构建失败怎么办

问题原因

你在docker-compose中配置的extra_hosts属于容器运行时配置,仅在容器启动后生效。而pip install custom_package是Dockerfile构建阶段执行的命令,构建过程中无法读取到运行时的hosts配置,因此无法解析无公共DNS记录的nexus.corp.com域名,导致依赖安装失败。
你之前直接使用docker build命令时添加的--add-host参数是直接给构建阶段注入hosts规则,所以可以正常执行。

解决方案

方案1(推荐,docker-compose版本≥3.3)

docker-compose从3.3版本开始支持build层级下的extra_hosts配置,专门用于给构建阶段注入hosts规则,修改docker-compose配置如下即可:

version: "3.3"

services:
  app:
    build:
      context: .
      # 放在build层级,构建阶段生效
      extra_hosts:
        - "nexus.corp.com:1.2.3.4"
    # 如果运行时也需要访问该域名,保留该配置,不需要可删除
    extra_hosts:
      - "nexus.corp.com:1.2.3.4"
    command: >
      sh -c "ping -c 4 nexus.corp.com"

修改后直接执行docker-compose build --no-cache即可正常构建。

方案2(适配旧版本docker-compose)

如果使用的docker-compose版本低于3.3,可以在执行构建命令时手动传入--add-host参数:

docker-compose build --add-host nexus.corp.com:1.2.3.4 --no-cache

验证方法

可以在Dockerfile的RUN pip3 install custom_package命令前添加一行RUN ping -c 4 nexus.corp.com,重新构建如果能正常输出ping的结果,说明hosts配置已经在构建阶段生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:24:00