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

Dockerfile构建报错:第18行ARG名称不能为空问题排查

报错根因

构建触发Dockerfile parse error line 18: ARG names can not be blank是语法不规范导致的:
Dockerfile的ARG指令定义带默认值的构建参数时,参数名、等号、默认值三者之间不能存在空格。你第18行写的ARG DEV = false在参数名DEV和等号之间加了空格,Docker解析器会将空格后的片段识别为新的ARG参数名,空值直接触发“参数名不能为空”的解析错误。

修复方案

仅需修改Dockerfile第18行的ARG定义,删除等号两侧的空格即可,正确写法:

ARG DEV=false

你的其余逻辑:包括docker-compose.yml中重写DEV参数为true的配置、RUN块中按DEV值判断是否安装开发依赖的shell逻辑、目录挂载和启动命令配置均无问题,不需要调整。

修复后完全符合你的设计预期:

  • 直接执行docker build构建生产镜像时,DEV取默认值false,仅安装requirements.txt内的生产依赖
  • 通过docker-compose构建启动服务时,会自动传入DEV=true,额外安装requirements.dev.txt内的开发依赖
修复后完整Dockerfile参考
# Install Python 3.9 image
FROM python:3.9-alpine3.13 

# maintainer of the image
LABEL maintainer="tenz8"

# for faster response
ENV PYTHONBUFFERED 1 

COPY ./requirements.txt /tmp/requirements.txt
COPY ./requirements.dev.txt /tmp/requirements.dev.txt
COPY ./app /app
WORKDIR /app
EXPOSE 8000

# getting overrided in docker-compose.yml
ARG DEV=false
# && \ used to split lines for smaller image layer
RUN python -m venv /py && \
    /py/bin/pip install --upgrade pip && \
    /py/bin/pip install -r /tmp/requirements.txt && \
    # install dev dependencies only when DEV=true
    if [ $DEV = "true" ]; \
        then /py/bin/pip install -r /tmp/requirements.dev.txt ; \
    fi && \  
    rm -rf /tmp && \    
    adduser \
        --disabled-password \
        --no-create-home \
        django-user    

ENV PATH="/py/bin:$PATH"

USER django-user

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:30:51