-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
92 lines (83 loc) · 7.63 KB
/
Dockerfile
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
ARG ALPINE_VERSION="latest"
#==================================================== BUILD STAGE ====================================================#
FROM alpine:${ALPINE_VERSION} AS build
ENV BUILD_UTILITIES="unzip wget"
ENV TERRAFORM_PLUGINS_PATH="/root/.terraform.d/plugins"
# Install the build utilities.
RUN apk add --no-cache ${BUILD_UTILITIES}
# Install the specified version of Terraform.
ARG TERRAFORM_VERSION="0.12.23"
ARG TERRAFORM_SHA256SUM="78fd53c0fffd657ee0ab5decac604b0dea2e6c0d4199a9f27db53f081d831a45"
RUN \
wget -nv -O "terraform_${TERRAFORM_VERSION}_linux_amd64.zip" "https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip" && \
echo "${TERRAFORM_SHA256SUM} terraform_${TERRAFORM_VERSION}_linux_amd64.zip" > "terraform_${TERRAFORM_VERSION}_SHA256SUMS" && \
sha256sum "terraform_${TERRAFORM_VERSION}_linux_amd64.zip" && \
sha256sum -c "terraform_${TERRAFORM_VERSION}_SHA256SUMS" && \
unzip "terraform_${TERRAFORM_VERSION}_linux_amd64.zip" -d /usr/bin && \
rm -f "terraform_${TERRAFORM_VERSION}*"
# Install the custom Terraform providers created by Danitso.
RUN mkdir -p \
"${TERRAFORM_PLUGINS_PATH}"
ENV TERRAFORM_PROVIDER_CLOUDDK_NAME="clouddk"
ARG TERRAFORM_PROVIDER_CLOUDDK_VERSION="0.3.1"
ARG TERRAFORM_PROVIDER_CLOUDDK_SHA256SUM="52784db5a702d5ccbc09b86c7568bf542705e850b4d1ee214e126d03d4c18405"
RUN \
wget -nv -O "terraform-provider-${TERRAFORM_PROVIDER_CLOUDDK_NAME}_v${TERRAFORM_PROVIDER_CLOUDDK_VERSION}.zip" "https://github.com/danitso/terraform-provider-${TERRAFORM_PROVIDER_CLOUDDK_NAME}/releases/download/${TERRAFORM_PROVIDER_CLOUDDK_VERSION}/terraform-provider-${TERRAFORM_PROVIDER_CLOUDDK_NAME}_v${TERRAFORM_PROVIDER_CLOUDDK_VERSION}-custom_linux_amd64.zip" && \
echo "${TERRAFORM_PROVIDER_CLOUDDK_SHA256SUM} terraform-provider-${TERRAFORM_PROVIDER_CLOUDDK_NAME}_v${TERRAFORM_PROVIDER_CLOUDDK_VERSION}.zip" > "terraform-provider-${TERRAFORM_PROVIDER_CLOUDDK_NAME}_v${TERRAFORM_PROVIDER_CLOUDDK_VERSION}_SHA256SUMS" && \
sha256sum "terraform-provider-${TERRAFORM_PROVIDER_CLOUDDK_NAME}_v${TERRAFORM_PROVIDER_CLOUDDK_VERSION}.zip" && \
sha256sum -c "terraform-provider-${TERRAFORM_PROVIDER_CLOUDDK_NAME}_v${TERRAFORM_PROVIDER_CLOUDDK_VERSION}_SHA256SUMS" && \
unzip "terraform-provider-${TERRAFORM_PROVIDER_CLOUDDK_NAME}_v${TERRAFORM_PROVIDER_CLOUDDK_VERSION}.zip" -d "${TERRAFORM_PLUGINS_PATH}" && \
rm -f "terraform-provider-${TERRAFORM_PROVIDER_CLOUDDK_NAME}_v${TERRAFORM_PROVIDER_CLOUDDK_VERSION}.zip"
ENV TERRAFORM_PROVIDER_IRONIO_NAME="ironio"
ARG TERRAFORM_PROVIDER_IRONIO_VERSION="0.2.2"
ARG TERRAFORM_PROVIDER_IRONIO_SHA256SUM="698322324a2ecb73ac5719f7f1d2f36a27414bb0d475fbce8b82930e12978d88"
RUN \
wget -nv -O "terraform-provider-${TERRAFORM_PROVIDER_IRONIO_NAME}_v${TERRAFORM_PROVIDER_IRONIO_VERSION}.zip" "https://github.com/danitso/terraform-provider-${TERRAFORM_PROVIDER_IRONIO_NAME}/releases/download/${TERRAFORM_PROVIDER_IRONIO_VERSION}/terraform-provider-${TERRAFORM_PROVIDER_IRONIO_NAME}_v${TERRAFORM_PROVIDER_IRONIO_VERSION}-custom_linux_amd64.zip" && \
echo "${TERRAFORM_PROVIDER_IRONIO_SHA256SUM} terraform-provider-${TERRAFORM_PROVIDER_IRONIO_NAME}_v${TERRAFORM_PROVIDER_IRONIO_VERSION}.zip" > "terraform-provider-${TERRAFORM_PROVIDER_IRONIO_NAME}_v${TERRAFORM_PROVIDER_IRONIO_VERSION}_SHA256SUMS" && \
sha256sum "terraform-provider-${TERRAFORM_PROVIDER_IRONIO_NAME}_v${TERRAFORM_PROVIDER_IRONIO_VERSION}.zip" && \
sha256sum -c "terraform-provider-${TERRAFORM_PROVIDER_IRONIO_NAME}_v${TERRAFORM_PROVIDER_IRONIO_VERSION}_SHA256SUMS" && \
unzip "terraform-provider-${TERRAFORM_PROVIDER_IRONIO_NAME}_v${TERRAFORM_PROVIDER_IRONIO_VERSION}.zip" -d "${TERRAFORM_PLUGINS_PATH}" && \
rm -f "terraform-provider-${TERRAFORM_PROVIDER_IRONIO_NAME}_v${TERRAFORM_PROVIDER_IRONIO_VERSION}.zip"
ENV TERRAFORM_PROVIDER_PROXMOX_NAME="proxmox"
ARG TERRAFORM_PROVIDER_PROXMOX_VERSION="0.3.0"
ARG TERRAFORM_PROVIDER_PROXMOX_SHA256SUM="479744bf8197eefbd97d287e1495b213a656c25b6965d3405c073142cd24557e"
RUN \
wget -nv -O "terraform-provider-${TERRAFORM_PROVIDER_PROXMOX_NAME}_v${TERRAFORM_PROVIDER_PROXMOX_VERSION}.zip" "https://github.com/danitso/terraform-provider-${TERRAFORM_PROVIDER_PROXMOX_NAME}/releases/download/${TERRAFORM_PROVIDER_PROXMOX_VERSION}/terraform-provider-${TERRAFORM_PROVIDER_PROXMOX_NAME}_v${TERRAFORM_PROVIDER_PROXMOX_VERSION}-custom_linux_amd64.zip" && \
echo "${TERRAFORM_PROVIDER_PROXMOX_SHA256SUM} terraform-provider-${TERRAFORM_PROVIDER_PROXMOX_NAME}_v${TERRAFORM_PROVIDER_PROXMOX_VERSION}.zip" > "terraform-provider-${TERRAFORM_PROVIDER_PROXMOX_NAME}_v${TERRAFORM_PROVIDER_PROXMOX_VERSION}_SHA256SUMS" && \
sha256sum "terraform-provider-${TERRAFORM_PROVIDER_PROXMOX_NAME}_v${TERRAFORM_PROVIDER_PROXMOX_VERSION}.zip" && \
sha256sum -c "terraform-provider-${TERRAFORM_PROVIDER_PROXMOX_NAME}_v${TERRAFORM_PROVIDER_PROXMOX_VERSION}_SHA256SUMS" && \
unzip "terraform-provider-${TERRAFORM_PROVIDER_PROXMOX_NAME}_v${TERRAFORM_PROVIDER_PROXMOX_VERSION}.zip" -d "${TERRAFORM_PLUGINS_PATH}" && \
rm -f "terraform-provider-${TERRAFORM_PROVIDER_PROXMOX_NAME}_v${TERRAFORM_PROVIDER_PROXMOX_VERSION}.zip"
ENV TERRAFORM_PROVIDER_SFTP_NAME="sftp"
ARG TERRAFORM_PROVIDER_SFTP_VERSION="0.1.1"
ARG TERRAFORM_PROVIDER_SFTP_SHA256SUM="a0c7c2054396afc31a6ea6bea25dd7f4611fdc6dd2ba40a071eda20359428d1b"
RUN \
wget -nv -O "terraform-provider-${TERRAFORM_PROVIDER_SFTP_NAME}_v${TERRAFORM_PROVIDER_SFTP_VERSION}.zip" "https://github.com/danitso/terraform-provider-${TERRAFORM_PROVIDER_SFTP_NAME}/releases/download/${TERRAFORM_PROVIDER_SFTP_VERSION}/terraform-provider-${TERRAFORM_PROVIDER_SFTP_NAME}_v${TERRAFORM_PROVIDER_SFTP_VERSION}-custom_linux_amd64.zip" && \
echo "${TERRAFORM_PROVIDER_SFTP_SHA256SUM} terraform-provider-${TERRAFORM_PROVIDER_SFTP_NAME}_v${TERRAFORM_PROVIDER_SFTP_VERSION}.zip" > "terraform-provider-${TERRAFORM_PROVIDER_SFTP_NAME}_v${TERRAFORM_PROVIDER_SFTP_VERSION}_SHA256SUMS" && \
sha256sum "terraform-provider-${TERRAFORM_PROVIDER_SFTP_NAME}_v${TERRAFORM_PROVIDER_SFTP_VERSION}.zip" && \
sha256sum -c "terraform-provider-${TERRAFORM_PROVIDER_SFTP_NAME}_v${TERRAFORM_PROVIDER_SFTP_VERSION}_SHA256SUMS" && \
unzip "terraform-provider-${TERRAFORM_PROVIDER_SFTP_NAME}_v${TERRAFORM_PROVIDER_SFTP_VERSION}.zip" -d "${TERRAFORM_PLUGINS_PATH}" && \
rm -f "terraform-provider-${TERRAFORM_PROVIDER_SFTP_NAME}_v${TERRAFORM_PROVIDER_SFTP_VERSION}.zip"
#==================================================== FINAL STAGE ====================================================#
FROM alpine:${ALPINE_VERSION}
#==================================================== INFORMATION ====================================================#
LABEL Description="A Docker Image for Terraform which includes all the custom providers created by Danitso"
LABEL Maintainer="Danitso <[email protected]>"
LABEL Vendor="Danitso"
#==================================================== INFORMATION ====================================================#
ENV LANG="C.UTF-8"
ENV TERRAFORM_BINARY_PATH="/usr/bin/terraform"
ENV TERRAFORM_PLUGINS_PATH="/root/.terraform.d/plugins"
ENV TERRAFORM_UTILITIES="git"
# Copy the binaries from the build stage.
COPY --from=build "${TERRAFORM_BINARY_PATH}" "${TERRAFORM_BINARY_PATH}"
COPY --from=build "${TERRAFORM_PLUGINS_PATH}" "${TERRAFORM_PLUGINS_PATH}"
# Ensure that the binaries can be executed.
RUN chmod +x "${TERRAFORM_BINARY_PATH}" "${TERRAFORM_PLUGINS_PATH}"/*
# Install utilities supported by Terraform.
RUN apk add --no-cache ${TERRAFORM_UTILITIES}
# Create the workspace directory and remain inside it.
RUN mkdir -p /workspace
WORKDIR /workspace
# Set the entrypoint to Terraform as we will not be requiring shell access.
ENTRYPOINT [ "/usr/bin/terraform" ]