Hadolint é uma ferramenta interessante para realizar linter de arquivos Dockerfile. Preza pelas boas práticas e faz, inclusive, de shell bash incluído no Dockerfile. Um pequeno exemplo aqui abaixo usando o hadolint instalado diretamente pelo brew e usando imagem de contêiner.
Exemplo de Dockerfile:
# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
$ brew install hadolint
$ hadolint Dockerfile
Dockerfile:6 DL3018 warning: Pin versions in apk add. Instead of `apk add <package>` use `apk add <package>=<version>`
O exemplo acima, pede para que seja discriminado a versão do pacote ao invés de usar a versão latest dos binários.
É possível ignorar esta mensagem usando --ignore:
$ hadolint --ignore DL3018 Dockerfile
Usando Docker:
$docker run --rm -i ghcr.io/hadolint/hadolint < Dockerfile
Para ignorar nas imagens docker, basta incluir uma linha com comentário com código de erro:
# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
# hadolint ignore=DL3018
# hadolint ignore=DL3006,3013 (e demais separados por vírgulas)
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
Repita o comando:
$ docker run --rm -i ghcr.io/hadolint/hadolint < Dockerfile
Saiba mais em: https://githubhelp.com/hadolint/hadolint
Top comments (0)