Lint Rules

The following Hadolint-compatible rules are implemented: - DL1001 - Avoid inline ignore pragmas - DL3000 - Use absolute WORKDIR - DL3001 - Avoid irrelevant shell commands - DL3002 - Last USER should not be root - DL3003 - Use WORKDIR to switch to a directory - DL3004 - Do not use sudo - DL3006 - Always tag the version of an image explicitly - DL3007 - Avoid latest tag - DL3008 - Pin versions in apt-get install - DL3009 - Delete the APT lists after installing packages - DL3010 - Use ADD for extracting archives into an image - DL3011 - Valid UNIX ports range from 0 to 65535 - DL3012 - Multiple HEALTHCHECK instructions - DL3013 - Pin versions in pip - DL3014 - Use the -y switch for apt-get install - DL3015 - Use --no-install-recommends with apt-get - DL3016 - Pin versions in npm - DL3018 - Pin versions in apk add - DL3019 - Use --no-cache with apk add - DL3020 - Use COPY instead of ADD for files and folders - DL3021 - Ensure destination ends with slash when copying multiple sources - DL3022 - COPY --from should reference a previous FROM alias - DL3023 - COPY --from cannot reference its own stage - DL3024 - FROM aliases must be unique - DL3025 - Use JSON notation for CMD and ENTRYPOINT - DL3026 - Restrict registries used in FROM images - DL3027 - Avoid using apt - DL3028 - Pin gem versions - DL3029 - Do not use --platform flag with FROM - DL3030 - Use -y with yum install - DL3032 - Run yum clean all - DL3033 - Pin versions in yum install - DL3034 - Use non-interactive zypper - DL3035 - Avoid zypper dist-upgrade - DL3036 - Clean zypper cache - DL3037 - Pin versions in zypper install - DL3038 - Use -y with dnf install - DL3040 - dnf clean all missing after dnf command - DL3041 - Avoid dnf upgrade or update in Dockerfiles - DL3042 - Combine consecutive RUN instructions that use the same package manager - DL3043 - Specify OS version tag for base images - DL3044 - Specify version with dnf/microdnf install - DL3045 - COPY --from without digest pinning for external image - DL3046 - Avoid apk upgrade in Dockerfiles - DL3047 - Clean apk cache after installing packages - DL3048 - Invalid Label Key - DL3050 - Superfluous label(s) present - DL3051 - Label value is empty - DL3052 - Label is not a valid URL - DL3053 - Label does not conform to RFC3339 - DL3054 - Label is not a valid SPDX identifier - DL3055 - Stage image is not pinned by digest - DL3056 - Label does not conform to semantic versioning - DL3057 - HEALTHCHECK instruction missing - DL3058 - Label is not a valid email address - DL3059 - Multiple consecutive RUN instructions - DL3060 - yarn cache clean missing after yarn install - DL3061 - Dockerfile must start with FROM or ARG - DL4000 - MAINTAINER is deprecated - DL4001 - Either use Wget or Curl but not both - DL4003 - Multiple CMD instructions - DL4004 - Multiple ENTRYPOINT instructions - DL4005 - Use SHELL to change the default shell - DL4006 - Set the SHELL option -o pipefail before RUN with a pipe in it

(c) 2025 Asymmetric Effort, LLC. scaldwell@asymmetric-effort.com Asymmetric Effort logo