Skip to content

Commit 4dc899c

Browse files
committed
Restructure Docker build process to inherit from shared base image
1 parent 46189e8 commit 4dc899c

File tree

3 files changed

+20
-174
lines changed

3 files changed

+20
-174
lines changed

Makefile

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,10 @@
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_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_KITCHEN_TERRAFORM}
22+
DOCKER_IMAGE_KITCHEN_TERRAFORM := cft/kitchen-terraform_terraform-google-kubernetes-engine
2823

2924
# All is the first target in the file so it will get picked up when you just run 'make' on its own
3025
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 +89,51 @@ version:
9489
@source helpers/version-repo.sh
9590

9691
# 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-
10792
.PHONY: docker_build_kitchen_terraform
10893
docker_build_kitchen_terraform:
10994
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}" \
95+
--build-arg BASE_IMAGE=${DOCKER_REPO_BASE_KITCHEN_TERRAFORM} \
11396
-t ${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} .
11497

98+
# Push Docker image
99+
.PHONY: docker_push_kitchen_terraform
100+
docker_push_kitchen_terraform:
101+
docker tag ${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} ${DOCKER_ORG}/${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM}
102+
docker push ${DOCKER_ORG}/${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM}
103+
115104
# Run docker
116105
.PHONY: docker_run
117106
docker_run:
118107
docker run --rm -it \
119-
-v $(CURDIR):/cftk/workdir \
108+
-v $(CURDIR):/cft/workdir \
120109
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
121110
/bin/bash
122111

123112
.PHONY: docker_create
124-
docker_create: docker_build_terraform docker_build_kitchen_terraform
113+
docker_create: docker_build_kitchen_terraform
125114
docker run --rm -it \
126-
-v $(CURDIR):/cftk/workdir \
115+
-v $(CURDIR):/cft/workdir \
127116
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
128117
/bin/bash -c "kitchen create"
129118

130119
.PHONY: docker_converge
131120
docker_converge:
132121
docker run --rm -it \
133-
-v $(CURDIR):/cftk/workdir \
122+
-v $(CURDIR):/cft/workdir \
134123
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
135124
/bin/bash -c "kitchen converge && kitchen converge"
136125

137126
.PHONY: docker_verify
138127
docker_verify:
139128
docker run --rm -it \
140-
-v $(CURDIR):/cftk/workdir \
129+
-v $(CURDIR):/cft/workdir \
141130
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
142131
/bin/bash -c "kitchen verify"
143132

144133
.PHONY: docker_destroy
145134
docker_destroy:
146135
docker run --rm -it \
147-
-v $(CURDIR):/cftk/workdir \
136+
-v $(CURDIR):/cft/workdir \
148137
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
149138
/bin/bash -c "kitchen destroy"
150139

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)