Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
50 lines (46 loc) · 2.08 KB
/
Copy pathDockerfile
File metadata and controls
50 lines (46 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
ARG PYTHON_VERSION="3.11.6"
ARG ALPINE_VERSION="3.18"
ARG TERRAFORM_VERSION="1.6.6"
ARG HCL2JSON_VERSION="v0.6.0"
ARG FSWATCH_VERSION="1.17.1"
FROM alpine:${ALPINE_VERSION} as download
ARG TERRAFORM_VERSION
ARG HCL2JSON_VERSION
ARG FSWATCH_VERSION
ENV OS_ARCH="amd64"
WORKDIR /downloads/
RUN if [ "$(uname -m)" = "aarch64" ]; then export OS_ARCH=arm64; fi && \
apk add --no-cache unzip curl && \
curl -sL -o terraform.zip "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_${OS_ARCH}.zip" && \
unzip terraform.zip && rm terraform.zip && \
curl -sL -o hcl2json "https://github.com/tmccombs/hcl2json/releases/download/${HCL2JSON_VERSION}/hcl2json_linux_${OS_ARCH}" && chmod +x hcl2json && \
mkdir fswatch && cd fswatch && \
curl -L -o fswatch.tar.gz "https://github.com/unfor19/fswatch/releases/download/${FSWATCH_VERSION}/fswatch-${FSWATCH_VERSION}-linux-alpine-${OS_ARCH}.tar.gz" && \
tar -xzf fswatch.tar.gz && chmod +x fswatch && rm fswatch.tar.gz
# Output: /downloads/ terraform, hcl2json, fswatch
FROM python:${PYTHON_VERSION}-alpine${ALPINE_VERSION} as app
ARG APP_USER_NAME="appuser"
ARG APP_USER_ID="1000"
ARG APP_GROUP_NAME="appgroup"
ARG APP_GROUP_ID="1000"
# fswatch: litstdc++, gettext
# tfcoding: bash, jq, util-linux (bargs)
RUN apk add --no-cache \
libstdc++ gettext \
bash jq util-linux \
git openssh-client curl aws-cli && \
python -m pip install -U pip setuptools wheel && \
python -m pip install awscli-local terraform-local
COPY --from=download /downloads/terraform /usr/local/bin/terraform
COPY --from=download /downloads/hcl2json /usr/local/bin/hcl2json
COPY --from=download /downloads/fswatch/*.so* /usr/local/lib/
COPY --from=download /downloads/fswatch/fswatch /usr/local/bin/fswatch
WORKDIR /src/
RUN \
addgroup -g "${APP_GROUP_ID}" "${APP_GROUP_NAME}" && \
adduser -H -D -u "$APP_USER_ID" -G "$APP_GROUP_NAME" "$APP_USER_NAME" && \
chown -R "$APP_USER_ID":"$APP_GROUP_ID" .
USER "$APP_USER_NAME"
SHELL [ "/usr/local/bin/bash" ]
COPY . /usr/local/bin/
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]