Skip to content

Commit

Permalink
repair multi stage build dep chain
Browse files Browse the repository at this point in the history
  • Loading branch information
usrbinkat authored Aug 25, 2024
1 parent 357ab35 commit ffbed9f
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 109 deletions.
85 changes: 29 additions & 56 deletions docker/base/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,70 +1,17 @@
###############################################################################
# Use:
# - docker build --progress plain --tag ghcr.io/pulumi/devcontainer:base .
# - docker build --progress plain --tag ghcr.io/pulumi/devcontainer:base -f docker/base/Dockerfile ./docker
# - docker run --rm -d --name devcontainer --hostname devcontainer --entrypoint bash ghcr.io/pulumi/devcontainer:base
###############################################################################
# Base VSCode Image
FROM ghcr.io/pulumi/devcontainer:slim-all

#################################################################################
# Base package and user configuration
#################################################################################

# Apt Packages
ARG APT_PKGS="\
bc \
mc \
btop \
pigz \
ripgrep \
tcpdump \
libwrap0 \
neofetch \
"

# Apt Packages
RUN echo \
&& export TEST="neofetch" \
&& ${apt_update} \
&& bash -c "${apt_install} --no-install-recommends -o Dpkg::Options::='--force-confold' ${APT_PKGS}" \
&& bash -c "${apt_clean}" \
&& ${dir_clean} \
&& ${TEST} \
&& echo

#################################################################################
# Image Metadata
#################################################################################
LABEL tag="base"
ENV TAG="base"

##################################################################################
#### Common Binary Install Arguments
##################################################################################

# Insall Github Actions Local Testing CLI
# - https://nektosact.com
# - https://github.com/nektos/gh-act
RUN echo \
&& export NAME=act \
&& export TEST="${NAME} --version" \
&& export REPOSITORY="nektos/gh-act" \
&& export VERSION="$(${curl} https://api.github.com/repos/${REPOSITORY}/releases/latest | jq --raw-output .tag_name)" \
&& export ARCH=$(uname -m | awk '{ if ($1 == "x86_64") print "amd64"; else if ($1 == "aarch64" || $1 == "arm64") print "arm64"; else print "unknown" }') \
&& export PKG="linux-${ARCH}" \
&& export URL="https://github.com/${REPOSITORY}/releases/download/${VERSION}/${PKG}" \
&& echo "---------------------------------------------------------"\
&& echo "INFO[${NAME}] Installed:" \
&& echo "INFO[${NAME}] Command: ${NAME}" \
&& echo "INFO[${NAME}] Package: ${PKG}" \
&& echo "INFO[${NAME}] Latest Release: ${VERSION}" \
&& echo "INFO[${NAME}] Architecture: ${ARCH}" \
&& echo "INFO[${NAME}] Source: ${URL}" \
&& echo "---------------------------------------------------------"\
&& ${curl} ${URL} --output /tmp/${NAME} \
&& sudo ${INSTALL} /tmp/${NAME} ${BIN}/${NAME} \
&& ${dir_clean} \
&& ${TEST} \
&& echo

# Install Kubectl
# - https://kubernetes.io
# - github.com/kubernetes/kubernetes
Expand Down Expand Up @@ -127,3 +74,29 @@ RUN echo \
&& ${dir_clean} \
&& ${TEST} \
&& echo

##################################################################################
# Install k9s CLI
# - https://k9scli.io
# - https://github.com/derailed/k9s
RUN echo \
&& export NAME=k9s \
&& export TEST="${NAME} version" \
&& export REPOSITORY="derailed/k9s" \
&& export VERSION="$(${curl} https://api.github.com/repos/${REPOSITORY}/releases/latest | jq --raw-output .tag_name)" \
&& export ARCH=$(uname -m | awk '{ if ($1 == "x86_64") print "amd64"; else if ($1 == "aarch64" || $1 == "arm64") print "arm64"; else print "unknown" }') \
&& export PKG="${NAME}_Linux_${ARCH}.tar.gz" \
&& export URL="https://github.com/${REPOSITORY}/releases/download/${VERSION}/${PKG}" \
&& echo "---------------------------------------------------------"\
&& echo "INFO[${NAME}] Installed:" \
&& echo "INFO[${NAME}] Command: ${NAME}" \
&& echo "INFO[${NAME}] Package: ${PKG}" \
&& echo "INFO[${NAME}] Latest Release: ${VERSION}" \
&& echo "INFO[${NAME}] Architecture: ${ARCH}" \
&& echo "INFO[${NAME}] Source: ${URL}" \
&& echo "---------------------------------------------------------"\
&& ${curl} ${URL} | sudo tar xzvf - --directory /tmp ${NAME} \
&& sudo ${INSTALL} /tmp/${NAME} ${BIN}/${NAME} \
&& ${dir_clean} \
&& ${TEST} \
&& echo
9 changes: 3 additions & 6 deletions docker/code-server/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
###############################################################################
# Use:
# - docker build --progress plain --tag ghcr.io/pulumi/devcontainer:code .
# - docker run --rm -d --name devcontainer --hostname devcontainer ghcr.io/pulumi/devcontainer:code
# - docker build --progress plain --tag ghcr.io/pulumi/devcontainer:code -f docker/code-server/Dockerfile ./docker
# - docker run --rm -d --name devcontainer --hostname devcontainer --entrypoint bash ghcr.io/pulumi/devcontainer:code
###############################################################################
FROM ghcr.io/containercraft/devcontainer:extra

#################################################################################
# Image Metadata
#################################################################################
LABEL tag="code-server"
ENV TAG="code-server"

# Install VSCode Service
EXPOSE 8080
Expand Down
35 changes: 3 additions & 32 deletions docker/docker-in-docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
###############################################################################
# Use:
# - docker build --progress plain --tag ghcr.io/pulumi/devcontainer:dind .
# - docker build --progress plain --tag ghcr.io/pulumi/devcontainer:dind -f docker/docker-in-docker/Dockerfile ./docker
# - docker run --rm -d --name devcontainer --hostname devcontainer ghcr.io/pulumi/devcontainer:dind
###############################################################################
FROM ghcr.io/containercraft/devcontainer:base

#################################################################################
# Image Metadata
#################################################################################
LABEL tag="docker-in-docker"
LABEL tag="dind"
ENV TAG="dind"

#################################################################################
# Base package and user configuration
Expand Down Expand Up @@ -54,29 +51,3 @@ RUN echo \
&& ${dir_clean} \
&& ${TEST} \
&& echo

##################################################################################
# Install k9s CLI
# - https://k9scli.io
# - https://github.com/derailed/k9s
RUN echo \
&& export NAME=k9s \
&& export TEST="${NAME} version" \
&& export REPOSITORY="derailed/k9s" \
&& export VERSION="$(${curl} https://api.github.com/repos/${REPOSITORY}/releases/latest | jq --raw-output .tag_name)" \
&& export ARCH=$(uname -m | awk '{ if ($1 == "x86_64") print "amd64"; else if ($1 == "aarch64" || $1 == "arm64") print "arm64"; else print "unknown" }') \
&& export PKG="${NAME}_Linux_${ARCH}.tar.gz" \
&& export URL="https://github.com/${REPOSITORY}/releases/download/${VERSION}/${PKG}" \
&& echo "---------------------------------------------------------"\
&& echo "INFO[${NAME}] Installed:" \
&& echo "INFO[${NAME}] Command: ${NAME}" \
&& echo "INFO[${NAME}] Package: ${PKG}" \
&& echo "INFO[${NAME}] Latest Release: ${VERSION}" \
&& echo "INFO[${NAME}] Architecture: ${ARCH}" \
&& echo "INFO[${NAME}] Source: ${URL}" \
&& echo "---------------------------------------------------------"\
&& ${curl} ${URL} | sudo tar xzvf - --directory /tmp ${NAME} \
&& sudo ${INSTALL} /tmp/${NAME} ${BIN}/${NAME} \
&& ${dir_clean} \
&& ${TEST} \
&& echo
9 changes: 3 additions & 6 deletions docker/extra/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
###############################################################################
# Use:
# - docker build --progress plain --tag ghcr.io/containercraft/devcontainer:extra .
# - docker run --rm -d --name devcontainer --hostname devcontainer ghcr.io/containercraft/devcontainer:extra
# - docker build --progress plain --tag ghcr.io/containercraft/devcontainer:extra -f docker/extra/Dockerfile ./docker
# - docker run --rm -d --name devcontainer --hostname devcontainer --entrypoint bash ghcr.io/containercraft/devcontainer:extra
###############################################################################
FROM ghcr.io/containercraft/devcontainer:dind

#################################################################################
# Image Metadata
#################################################################################
LABEL tag="extra"
ENV TAG="extra"

#################################################################################
# Base package and user configuration
Expand Down
9 changes: 3 additions & 6 deletions docker/slim-all/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
###############################################################################
# Use:
# - docker build --progress plain --tag ghcr.io/pulumi/devcontainer:slim-all .
# - docker build --progress plain --tag ghcr.io/pulumi/devcontainer:slim-all -f docker/slim-all/Dockerfile ./docker
# - docker run --rm -d --name devcontainer --hostname devcontainer ghcr.io/pulumi/devcontainer:slim-all
###############################################################################
# Base VSCode Image
# Base Image
FROM ghcr.io/containercraft/devcontainer:slim

#################################################################################
# Image Metadata
LABEL tag="slim-all"
ENV TAG="slim-all"

#################################################################################
# Install Programming Language Tooling
Expand Down Expand Up @@ -43,7 +41,6 @@ RUN echo \
&& ${dir_clean} \
&& echo


# Golang
RUN echo ;set -ex \
&& jq --version \
Expand Down
35 changes: 32 additions & 3 deletions docker/slim/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
###############################################################################
# Use:
# - docker build --progress plain --tag ghcr.io/pulumi/devcontainer:slim .
# - docker build --progress plain --tag ghcr.io/pulumi/devcontainer:slim -f docker/slim/Dockerfile ./docker
# - docker run --rm -d --name devcontainer --hostname devcontainer ghcr.io/pulumi/devcontainer:slim
###############################################################################
# Base VSCode Image
# Base Devcontainer Image
FROM mcr.microsoft.com/devcontainers/base:ubuntu
LABEL tag="slim"
ENV TAG="slim"
SHELL ["/bin/bash", "-c", "-e"]

# Append rootfs directory tree into container to copy
Expand Down Expand Up @@ -65,6 +67,7 @@ ARG APT_PKGS="\
vim \
tar \
pen \
btop \
file \
wget \
tree \
Expand All @@ -77,6 +80,7 @@ ARG APT_PKGS="\
psmisc \
procps \
passwd \
libwrap0 \
xz-utils \
fontconfig \
glibc-tools \
Expand Down Expand Up @@ -348,6 +352,32 @@ RUN echo \
&& ${TEST} \
&& echo

#################################################################################
# Insall Github Actions Local Testing CLI
# - https://nektosact.com
# - https://github.com/nektos/gh-act
RUN echo \
&& export NAME=act \
&& export TEST="${NAME} --version" \
&& export REPOSITORY="nektos/gh-act" \
&& export VERSION="$(${curl} https://api.github.com/repos/${REPOSITORY}/releases/latest | jq --raw-output .tag_name)" \
&& export ARCH=$(uname -m | awk '{ if ($1 == "x86_64") print "amd64"; else if ($1 == "aarch64" || $1 == "arm64") print "arm64"; else print "unknown" }') \
&& export PKG="linux-${ARCH}" \
&& export URL="https://github.com/${REPOSITORY}/releases/download/${VERSION}/${PKG}" \
&& echo "---------------------------------------------------------"\
&& echo "INFO[${NAME}] Installed:" \
&& echo "INFO[${NAME}] Command: ${NAME}" \
&& echo "INFO[${NAME}] Package: ${PKG}" \
&& echo "INFO[${NAME}] Latest Release: ${VERSION}" \
&& echo "INFO[${NAME}] Architecture: ${ARCH}" \
&& echo "INFO[${NAME}] Source: ${URL}" \
&& echo "---------------------------------------------------------"\
&& ${curl} ${URL} --output /tmp/${NAME} \
&& sudo ${INSTALL} /tmp/${NAME} ${BIN}/${NAME} \
&& ${dir_clean} \
&& ${TEST} \
&& echo

################################################################################
# Install Pulumi CLI, ESC, & CTL

Expand Down Expand Up @@ -435,7 +465,6 @@ HEALTHCHECK --interval=120s --timeout=30s --start-period=5s --retries=3 CMD [ "t

#################################################################################
# Image Metadata
LABEL tag="slim"
LABEL name="ContainerCraft Konductor Devcontainer"
LABEL io.k8s.display-name="ContainerCraft Konductor Devcontainer"
LABEL org.opencontainers.image.authors="github.com/ContainerCraft"
Expand Down

0 comments on commit ffbed9f

Please sign in to comment.