Skip to content

Commit 1a33b90

Browse files
committed
fix: Remove dependency on other docker image
1 parent 5dbd819 commit 1a33b90

File tree

1 file changed

+90
-4
lines changed

1 file changed

+90
-4
lines changed

Dockerfile.tools

Lines changed: 90 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,93 @@
1-
# Dockerfile.tools - Docker image for individual tool execution
2-
ARG BASE_IMAGE
3-
# hadolint ignore=DL3006
4-
FROM ${BASE_IMAGE}
1+
2+
# Dockerfile.tools - Standalone Docker image for individual tool execution
3+
FROM python:3.12-alpine@sha256:9b8808206f4a956130546a32cbdd8633bc973b19db2923b7298e6f90cc26db08 AS python_base
4+
5+
FROM python_base AS builder
6+
ARG TARGETOS
7+
ARG TARGETARCH
8+
WORKDIR /bin_dir
9+
RUN apk add --no-cache \
10+
bash=~5 \
11+
curl=~8 && \
12+
python3 -m pip install --no-cache-dir --upgrade \
13+
pip~=25.0 \
14+
setuptools~=75.8
15+
COPY tools/install/ /install/
16+
ARG PRE_COMMIT_VERSION=${PRE_COMMIT_VERSION:-latest}
17+
RUN touch /.env && \
18+
if [ "$PRE_COMMIT_VERSION" = "false" ]; then \
19+
echo "Vital software can't be skipped" && exit 1; \
20+
fi
21+
RUN /install/pre-commit.sh
22+
ARG OPENTOFU_VERSION=${OPENTOFU_VERSION:-false}
23+
ARG TERRAFORM_VERSION=${TERRAFORM_VERSION:-false}
24+
ARG CHECKOV_VERSION=${CHECKOV_VERSION:-false}
25+
ARG HCLEDIT_VERSION=${HCLEDIT_VERSION:-false}
26+
ARG INFRACOST_VERSION=${INFRACOST_VERSION:-false}
27+
ARG TERRAFORM_DOCS_VERSION=${TERRAFORM_DOCS_VERSION:-false}
28+
ARG TERRAGRUNT_VERSION=${TERRAGRUNT_VERSION:-false}
29+
ARG TERRASCAN_VERSION=${TERRASCAN_VERSION:-false}
30+
ARG TFLINT_VERSION=${TFLINT_VERSION:-false}
31+
ARG TFSEC_VERSION=${TFSEC_VERSION:-false}
32+
ARG TFUPDATE_VERSION=${TFUPDATE_VERSION:-false}
33+
ARG TRIVY_VERSION=${TRIVY_VERSION:-false}
34+
ARG INSTALL_ALL=${INSTALL_ALL:-false}
35+
RUN if [ "$INSTALL_ALL" != "false" ]; then \
36+
echo "OPENTOFU_VERSION=latest" >> /.env && \
37+
echo "TERRAFORM_VERSION=latest" >> /.env && \
38+
echo "CHECKOV_VERSION=latest" >> /.env && \
39+
echo "HCLEDIT_VERSION=latest" >> /.env && \
40+
echo "INFRACOST_VERSION=latest" >> /.env && \
41+
echo "TERRAFORM_DOCS_VERSION=latest" >> /.env && \
42+
echo "TERRAGRUNT_VERSION=latest" >> /.env && \
43+
echo "TERRASCAN_VERSION=latest" >> /.env && \
44+
echo "TFLINT_VERSION=latest" >> /.env && \
45+
echo "TFSEC_VERSION=latest" >> /.env && \
46+
echo "TFUPDATE_VERSION=latest" >> /.env && \
47+
echo "TRIVY_VERSION=latest" >> /.env \
48+
; fi
49+
RUN /install/opentofu.sh
50+
RUN /install/terraform.sh
51+
RUN /install/checkov.sh
52+
RUN /install/hcledit.sh
53+
RUN /install/infracost.sh
54+
RUN /install/terraform-docs.sh
55+
RUN /install/terragrunt.sh
56+
RUN /install/terrascan.sh
57+
RUN /install/tflint.sh
58+
RUN /install/tfsec.sh
59+
RUN /install/tfupdate.sh
60+
RUN /install/trivy.sh
61+
62+
FROM python_base
63+
RUN apk add --no-cache \
64+
git=~2 \
65+
bash=~5 \
66+
musl-dev=~1 \
67+
gcc=~14 \
68+
su-exec=~0.2 \
69+
openssh-client=~10
70+
COPY --from=builder /usr/local/bin/pre-commit /usr/local/bin/checkov* /usr/bin/
71+
COPY --from=builder /bin_dir/ /usr/bin/
72+
COPY --from=builder /usr/local/lib/python3.12/site-packages/ /usr/local/lib/python3.12/site-packages/
73+
COPY --from=builder /root/ /root/
74+
COPY hooks/ /usr/local/bin/hooks/
75+
COPY lib_getopt /usr/local/bin/
76+
COPY src/pre_commit_terraform/ /usr/local/lib/python3.12/site-packages/pre_commit_terraform/
77+
RUN if [ "$(grep -o '^terraform-docs SKIPPED$' /usr/bin/tools_versions_info)" = "" ]; then \
78+
apk add --no-cache perl=~5 \
79+
; fi && \
80+
if [ "$(grep -o '^infracost SKIPPED$' /usr/bin/tools_versions_info)" = "" ]; then \
81+
apk add --no-cache jq=~1 \
82+
; fi && \
83+
git config --global --add safe.directory /lint
84+
COPY tools/entrypoint.sh /entrypoint.sh
85+
COPY hooks/ /usr/bin/hooks/
86+
COPY lib_getopt /usr/bin/lib_getopt
87+
RUN chmod +x /usr/bin/hooks/*.sh
88+
ENV PRE_COMMIT_COLOR=${PRE_COMMIT_COLOR:-always}
89+
ENV INFRACOST_API_KEY=${INFRACOST_API_KEY:-}
90+
ENV INFRACOST_SKIP_UPDATE_CHECK=${INFRACOST_SKIP_UPDATE_CHECK:-false}
591

692
# Override entrypoint to allow direct tool execution
793
ENTRYPOINT []

0 commit comments

Comments
 (0)