Skip to content

Commit 0c06db8

Browse files
committed
Restructure Docker build process to inherit from shared base image
1 parent fd8019b commit 0c06db8

File tree

3 files changed

+21
-174
lines changed

3 files changed

+21
-174
lines changed

Makefile

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,11 @@
1616
SHELL := /usr/bin/env bash
1717

1818
# Docker build config variables
19-
BUILD_TERRAFORM_VERSION ?= 0.11.10
20-
BUILD_CLOUD_SDK_VERSION ?= 216.0.0
21-
BUILD_PROVIDER_GOOGLE_VERSION ?= 1.17.1
22-
BUILD_PROVIDER_GSUITE_VERSION ?= 0.1.8
23-
DOCKER_IMAGE_TERRAFORM := cftk/terraform
24-
DOCKER_TAG_TERRAFORM ?= ${BUILD_TERRAFORM_VERSION}_${BUILD_CLOUD_SDK_VERSION}_${BUILD_PROVIDER_GOOGLE_VERSION}_${BUILD_PROVIDER_GSUITE_VERSION}
25-
BUILD_RUBY_VERSION := 2.5.3
26-
DOCKER_IMAGE_KITCHEN_TERRAFORM := cftk/kitchen_terraform
27-
DOCKER_TAG_KITCHEN_TERRAFORM ?= ${BUILD_TERRAFORM_VERSION}_${BUILD_CLOUD_SDK_VERSION}_${BUILD_PROVIDER_GOOGLE_VERSION}_${BUILD_PROVIDER_GSUITE_VERSION}
19+
DOCKER_ORG := gcr.io/cloud-foundation-cicd
20+
DOCKER_TAG_BASE_KITCHEN_TERRAFORM ?= 0.11.10_216.0.0_1.19.1_0.1.10
21+
DOCKER_REPO_BASE_KITCHEN_TERRAFORM := ${DOCKER_ORG}/cft/kitchen-terraform:${DOCKER_TAG_BASE_KITCHEN_TERRAFORM}
22+
DOCKER_TAG_KITCHEN_TERRAFORM ?= ${DOCKER_TAG_BASE_KITCHEN_TERRAFORM}
23+
DOCKER_IMAGE_KITCHEN_TERRAFORM := cft/kitchen-terraform_terraform-google-kubernetes-engine
2824

2925
# All is the first target in the file so it will get picked up when you just run 'make' on its own
3026
all: check_shell check_python check_golang check_terraform check_docker check_base_files test_check_headers check_headers check_trailing_whitespace generate_docs
@@ -94,57 +90,51 @@ version:
9490
@source helpers/version-repo.sh
9591

9692
# Build Docker
97-
.PHONY: docker_build_terraform
98-
docker_build_terraform:
99-
docker build -f build/docker/terraform/Dockerfile \
100-
--build-arg BUILD_TERRAFORM_VERSION=${BUILD_TERRAFORM_VERSION} \
101-
--build-arg BUILD_CLOUD_SDK_VERSION=${BUILD_CLOUD_SDK_VERSION} \
102-
--build-arg BUILD_PROVIDER_GOOGLE_VERSION=${BUILD_PROVIDER_GOOGLE_VERSION} \
103-
--build-arg BUILD_PROVIDER_GSUITE_VERSION=${BUILD_PROVIDER_GSUITE_VERSION} \
104-
--build-arg CREDENTIALS_FILE=${CREDENTIALS_FILE} \
105-
-t ${DOCKER_IMAGE_TERRAFORM}:${DOCKER_TAG_TERRAFORM} .
106-
10793
.PHONY: docker_build_kitchen_terraform
10894
docker_build_kitchen_terraform:
10995
docker build -f build/docker/kitchen_terraform/Dockerfile \
110-
--build-arg BUILD_TERRAFORM_IMAGE="${DOCKER_IMAGE_TERRAFORM}:${DOCKER_TAG_TERRAFORM}" \
111-
--build-arg BUILD_RUBY_VERSION="${BUILD_RUBY_VERSION}" \
112-
--build-arg CREDENTIALS_FILE="${CREDENTIALS_FILE}" \
96+
--build-arg BASE_IMAGE=${DOCKER_REPO_BASE_KITCHEN_TERRAFORM} \
11397
-t ${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} .
11498

99+
# Push Docker image
100+
.PHONY: docker_push_kitchen_terraform
101+
docker_push_kitchen_terraform:
102+
docker tag ${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} ${DOCKER_ORG}/${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM}
103+
docker push ${DOCKER_ORG}/${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM}
104+
115105
# Run docker
116106
.PHONY: docker_run
117107
docker_run:
118108
docker run --rm -it \
119-
-v $(CURDIR):/cftk/workdir \
109+
-v $(CURDIR):/cft/workdir \
120110
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
121111
/bin/bash
122112

123113
.PHONY: docker_create
124-
docker_create: docker_build_terraform docker_build_kitchen_terraform
114+
docker_create: docker_build_kitchen_terraform
125115
docker run --rm -it \
126-
-v $(CURDIR):/cftk/workdir \
116+
-v $(CURDIR):/cft/workdir \
127117
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
128118
/bin/bash -c "kitchen create"
129119

130120
.PHONY: docker_converge
131121
docker_converge:
132122
docker run --rm -it \
133-
-v $(CURDIR):/cftk/workdir \
123+
-v $(CURDIR):/cft/workdir \
134124
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
135125
/bin/bash -c "kitchen converge && kitchen converge"
136126

137127
.PHONY: docker_verify
138128
docker_verify:
139129
docker run --rm -it \
140-
-v $(CURDIR):/cftk/workdir \
130+
-v $(CURDIR):/cft/workdir \
141131
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
142132
/bin/bash -c "kitchen verify"
143133

144134
.PHONY: docker_destroy
145135
docker_destroy:
146136
docker run --rm -it \
147-
-v $(CURDIR):/cftk/workdir \
137+
-v $(CURDIR):/cft/workdir \
148138
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
149139
/bin/bash -c "kitchen destroy"
150140

build/docker/kitchen_terraform/Dockerfile

Lines changed: 3 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -12,58 +12,17 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
ARG BUILD_TERRAFORM_IMAGE
16-
ARG BUILD_RUBY_VERSION
17-
# hadolint ignore=DL3006
18-
FROM $BUILD_TERRAFORM_IMAGE as cfkt_terraform
15+
ARG BASE_IMAGE
1916

20-
21-
22-
FROM ruby:$BUILD_RUBY_VERSION-alpine
17+
FROM $BASE_IMAGE
2318

2419
RUN apk add --no-cache \
25-
bash=4.4.19-r1 \
26-
curl=7.61.1-r1 \
27-
git=2.18.1-r0 \
28-
g++=6.4.0-r9 \
29-
jq=1.6_rc1-r1 \
30-
make=4.2.1-r2 \
31-
musl-dev=1.1.19-r10 \
32-
python2=2.7.15-r1 \
33-
python2-dev=2.7.15-r1 \
34-
py2-pip=10.0.1-r0 \
3520
ca-certificates=20171114-r3
3621

3722
ADD https://storage.googleapis.com/kubernetes-release/release/v1.12.2/bin/linux/amd64/kubectl /usr/local/bin/kubectl
3823
RUN chmod +x /usr/local/bin/kubectl
3924

40-
SHELL ["/bin/bash", "-c"]
41-
42-
ENV APP_BASE_DIR="/cftk"
43-
44-
COPY --from=cfkt_terraform $APP_BASE_DIR $APP_BASE_DIR
45-
46-
ARG CREDENTIALS_FILE
47-
48-
ENV HOME="$APP_BASE_DIR/home"
49-
ENV PATH $APP_BASE_DIR/bin:$APP_BASE_DIR/google-cloud-sdk/bin:$PATH
50-
ENV GOOGLE_APPLICATION_CREDENTIALS="$APP_BASE_DIR/workdir/$CREDENTIALS_FILE" \
51-
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE="$APP_BASE_DIR/workdir/$CREDENTIALS_FILE"
52-
53-
# Fix base64 inconsistency
54-
SHELL ["/bin/bash", "-c"]
55-
RUN echo 'base64() { if [[ $@ == "--decode" ]]; then command base64 -d | more; else command base64 "$@"; fi; }' >> $APP_BASE_DIR/home/.bashrc
56-
57-
RUN terraform --version && \
58-
gcloud --version && \
59-
ruby --version && \
60-
bundle --version
61-
62-
COPY ./Gemfile /opt/kitchen/
63-
6425
WORKDIR /opt/kitchen
26+
COPY Gemfile .
6527
RUN bundle install
66-
67-
RUN gcloud components install beta --quiet
68-
6928
WORKDIR $APP_BASE_DIR/workdir

build/docker/terraform/Dockerfile

Lines changed: 0 additions & 102 deletions
This file was deleted.

0 commit comments

Comments
 (0)