Dockerfile 内的前导空格以提高可读性

Paw*_*lak 5 docker dockerfile linter

我可以在 a 中使用缩进吗Dockerfile

像这样使用空格进行缩进有什么问题吗?

FROM python:3.8-buster
  RUN pip --no-cache-dir install poetry gunicorn

  WORKDIR /app
    COPY poetry.toml pyproject.toml poetry.lock /app/
    RUN poetry export --dev -f requirements.txt > requirements.txt
    RUN pip install --no-cache-dir -r requirements.txt

  WORKDIR /app/src
    COPY src /app/src
    RUN ./manage.py collectstatic --noinput --clear

  CMD ["gunicorn", "--bind", ":8000", "wsgi:application"]
Run Code Online (Sandbox Code Playgroud)

构建这样的 docker 镜像似乎工作得很好。

Gri*_*kin 3

您可以在 Dockerfile 中缩进行,但通常仅在中断长命令行时使用它,例如:

RUN export ADMIN_USER="mark" \
    && echo $ADMIN_USER > ./mark \
    && unset ADMIN_USER
Run Code Online (Sandbox Code Playgroud)

您可以对指令使用缩进,但我个人不会这样做——每个指令都会创建新的层,并且将它们以相同的缩进放置是合乎逻辑的。作为额外的缩进,例如:

FROM python:3.8-buster
  RUN pip --no-cache-dir install poetry gunicorn
Run Code Online (Sandbox Code Playgroud)

看起来它引入了子层(而 Docker 没有这样的概念)。

但同样,这是个人的,如果您和您的团队同意该格式化标准,那么有一堆 linter 允许您使用任何格式化标准,而无需进行很少(或无需)调整: