diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 825533d..cb8ed26 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -70,7 +70,7 @@ jobs: with: string: ${{ github.repository }} - - name: Build and Push Image pulumi/devcontainer:slim + - name: Build and Push Image devcontainer:slim uses: docker/build-push-action@v5 if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request' with: @@ -83,7 +83,7 @@ jobs: platforms: linux/amd64,linux/arm64 tags: "ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:slim,ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}" - - name: Build and Push Image pulumi/devcontainer:slim-node + - name: Build and Push Image devcontainer:slim-node uses: docker/build-push-action@v5 if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request' with: @@ -96,7 +96,7 @@ jobs: platforms: linux/amd64,linux/arm64 tags: "ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:slim-node,ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}" - - name: Build and Push Image pulumi/devcontainer:slim-python + - name: Build and Push Image devcontainer:slim-python uses: docker/build-push-action@v5 if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request' with: @@ -109,7 +109,7 @@ jobs: platforms: linux/amd64,linux/arm64 tags: "ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:slim-python,ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}" - - name: Build and Push Image pulumi/devcontainer:slim-golang + - name: Build and Push Image devcontainer:slim-golang uses: docker/build-push-action@v5 if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request' with: @@ -122,7 +122,7 @@ jobs: platforms: linux/amd64,linux/arm64 tags: "ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:slim-dotnet,ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}" - - name: Build and Push Image pulumi/devcontainer:slim-dotnet + - name: Build and Push Image devcontainer:slim-dotnet uses: docker/build-push-action@v5 if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request' with: @@ -135,7 +135,7 @@ jobs: platforms: linux/amd64,linux/arm64 tags: "ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:slim-dotnet,ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}" - - name: Build and Push Image pulumi/devcontainer:slim-all + - name: Build and Push Image devcontainer:slim-all uses: docker/build-push-action@v5 if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request' with: @@ -148,7 +148,7 @@ jobs: platforms: linux/amd64,linux/arm64 tags: "ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:slim-all,ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}" - - name: Build and Push Image pulumi/devcontainer:hugo + - name: Build and Push Image devcontainer:hugo uses: docker/build-push-action@v5 if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request' with: @@ -161,7 +161,7 @@ jobs: platforms: linux/amd64,linux/arm64 tags: "ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:hugo,ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}" - - name: Build and Push Image pulumi/devcontainer:base + - name: Build and Push Image devcontainer:base uses: docker/build-push-action@v5 if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request' with: @@ -174,7 +174,7 @@ jobs: platforms: linux/amd64,linux/arm64 tags: "ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:base,ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}" - - name: Build and Push Image pulumi/devcontainer:dind + - name: Build and Push Image devcontainer:dind uses: docker/build-push-action@v5 if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request' with: @@ -187,7 +187,7 @@ jobs: platforms: linux/amd64,linux/arm64 tags: "ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:dind,ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}" - - name: Build and Push Image pulumi/devcontainer:extra + - name: Build and Push Image devcontainer:extra uses: docker/build-push-action@v5 if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request' with: @@ -200,7 +200,7 @@ jobs: platforms: linux/amd64,linux/arm64 tags: "ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:extra,ghcr.io/${{ steps.string-repository-to-lower.outputs.lowercase }}:${{ github.sha }}" - - name: Build and Push Image pulumi/devcontainer:code-server + - name: Build and Push Image devcontainer:code-server uses: docker/build-push-action@v5 if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request' with: diff --git a/docker/base/Dockerfile b/docker/base/Dockerfile index cd71dcb..b410357 100644 --- a/docker/base/Dockerfile +++ b/docker/base/Dockerfile @@ -11,25 +11,25 @@ FROM ghcr.io/pulumi/devcontainer:slim-all # Apt Packages ARG APT_PKGS="\ -bc \ -mc \ -btop \ -pigz \ -ripgrep \ -tcpdump \ -libwrap0 \ -neofetch \ -" + 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 + && 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 @@ -44,84 +44,86 @@ LABEL tag="base" # - 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 + && 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 RUN echo \ -&& export NAME=kubectl \ -&& export TEST="${NAME} version --client" \ -&& export REPOSITORY="kubernetes/kubernetes" \ -&& 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}" \ -&& export URL="https://storage.googleapis.com/kubernetes-release/release/${VERSION}/bin/linux/${ARCH}/${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 "---------------------------------------------------------"\ -&& sudo ${curl} ${URL} --output /tmp/${NAME} \ -&& sudo ${INSTALL} /tmp/kubectl ${BIN}/${NAME} \ -&& ${dir_clean} \ -&& ${TEST} \ -&& echo + && export NAME=kubectl \ + && export TEST="${NAME} version --client" \ + && export REPOSITORY="kubernetes/kubernetes" \ + && 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}" \ + && export URL="https://storage.googleapis.com/kubernetes-release/release/${VERSION}/bin/linux/${ARCH}/${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 "---------------------------------------------------------"\ + && sudo ${curl} ${URL} --output /tmp/${NAME} \ + && sudo ${INSTALL} /tmp/kubectl ${BIN}/${NAME} \ + && ${dir_clean} \ + && ${TEST} \ + && echo # Install Krew ARG KREW_PKG="\ -view-secret \ -view-cert \ -open-svc \ -whoami \ -konfig \ -ktop \ -neat \ -tail \ -ctx \ -ns \ -" + view-utilization \ + view-secret \ + view-cert \ + rook-ceph \ + open-svc \ + whoami \ + konfig \ + ktop \ + neat \ + tail \ + ctx \ + ns \ + " RUN echo \ -&& export NAME=krew \ -&& export TEST="kubectl ${NAME} version" \ -&& export REPOSITORY="kubernetes-sigs/${NAME}" \ -&& export ARCH=$(uname -m | awk '{ if ($1 == "x86_64") print "amd64"; else if ($1 == "aarch64" || $1 == "arm64") print "arm64"; else print "unknown" }') \ -&& export VERSION="$(${curl} https://api.github.com/repos/${REPOSITORY}/releases/latest | jq --raw-output .tag_name)" \ -&& 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: (kubectl) ${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} | tar xzvf - --directory /tmp ./${NAME}-linux_${ARCH} \ -&& sudo ${INSTALL} /tmp/${NAME}-linux_${ARCH} ${BIN}/kubectl-${NAME} \ -&& for pkg in ${CODE_PKGS}; do kubectl ${NAME} install ${pkg}; echo "Installed: ${pkg}"; done \ -&& ${dir_clean} \ -&& ${TEST} \ -&& echo + && export NAME=krew \ + && export TEST="kubectl ${NAME} version" \ + && export REPOSITORY="kubernetes-sigs/${NAME}" \ + && export ARCH=$(uname -m | awk '{ if ($1 == "x86_64") print "amd64"; else if ($1 == "aarch64" || $1 == "arm64") print "arm64"; else print "unknown" }') \ + && export VERSION="$(${curl} https://api.github.com/repos/${REPOSITORY}/releases/latest | jq --raw-output .tag_name)" \ + && 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: (kubectl) ${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} | tar xzvf - --directory /tmp ./${NAME}-linux_${ARCH} \ + && sudo ${INSTALL} /tmp/${NAME}-linux_${ARCH} ${BIN}/kubectl-${NAME} \ + && for pkg in ${CODE_PKGS}; do kubectl ${NAME} install ${pkg}; echo "Installed: ${pkg}"; done \ + && ${dir_clean} \ + && ${TEST} \ + && echo diff --git a/docker/code-server/Dockerfile b/docker/code-server/Dockerfile index 49b2da6..7b66d84 100644 --- a/docker/code-server/Dockerfile +++ b/docker/code-server/Dockerfile @@ -34,6 +34,7 @@ RUN set -ex \ ARG CODE_PKGS="\ golang.go \ vscodevim.vim \ + stateful.runme \ github.copilot \ max-ss.cyberpunk \ ms-python.python \ @@ -42,19 +43,17 @@ ARG CODE_PKGS="\ oderwat.indent-rainbow \ okteto.kubernetes-context \ ms-vsliveshare.vsliveshare \ - chadonsom.auto-view-readme \ ms-azuretools.vscode-docker \ github.vscode-github-actions \ ms-kubernetes-tools.kind-vscode \ ms-vscode.vscode-typescript-next \ github.vscode-pull-request-github \ - matt-rudge.auto-open-preview-panel \ ms-vscode-remote.remote-containers \ - bierner.markdown-preview-github-styles \ + randomfractalsinc.vscode-data-table \ visualstudioexptteam.vscodeintellicode \ - bierner.markdown-preview-github-styles \ ms-kubernetes-tools.vscode-kubernetes-tools \ " + RUN set -ex \ && for pkg in ${CODE_PKGS}; do code-server --install-extension ${pkg}; echo "Installed: ${pkg}"; done \ && true diff --git a/docker/extra/Dockerfile b/docker/extra/Dockerfile index d82a345..7c26baa 100644 --- a/docker/extra/Dockerfile +++ b/docker/extra/Dockerfile @@ -1,7 +1,7 @@ ############################################################################### # Use: -# - docker build --progress plain --tag ghcr.io/pulumi/devcontainer:extra . -# - docker run --rm -d --name devcontainer --hostname devcontainer ghcr.io/pulumi/devcontainer:extra +# - docker build --progress plain --tag ghcr.io/containercraft/devcontainer:extra . +# - docker run --rm -d --name devcontainer --hostname devcontainer ghcr.io/containercraft/devcontainer:extra ############################################################################### FROM ghcr.io/containercraft/devcontainer:dind @@ -145,7 +145,31 @@ RUN echo \ && ${TEST} \ && echo -# Talosctl CLI +# Virtctl CLI +RUN echo \ + && export NAME=virtctl \ + && export TEST="${NAME} version --client" \ + && export REPOSITORY="kubevirt/kubevirt" \ + && 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}-${VERSION}-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 talosctl RUN echo \ && export NAME=talosctl \ && export TEST="${NAME} version --client" \ @@ -168,14 +192,14 @@ RUN echo \ && ${TEST} \ && echo -# Virtctl CLI +# Install omnictl RUN echo \ - && export NAME=virtctl \ - && export TEST="${NAME} version --client" \ - && export REPOSITORY="kubevirt/kubevirt" \ + && export NAME=omnictl \ + && export TEST="${NAME} --version" \ + && export REPOSITORY="siderolabs/omni" \ && 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}-${VERSION}-linux-${ARCH}" \ + && export PKG="${NAME}-linux-${ARCH}" \ && export URL="https://github.com/${REPOSITORY}/releases/download/${VERSION}/${PKG}" \ && echo "---------------------------------------------------------"\ && echo "INFO[${NAME}] Installed:" \ @@ -190,3 +214,28 @@ RUN echo \ && ${dir_clean} \ && ${TEST} \ && echo + +################################################################################## +# Install kubelogin +# - dep of omnictl +RUN set -ex \ + && export NAME=kubelogin \ + && export TEST="${NAME} --version" \ + && export REPOSITORY="azure/kubelogin" \ + && export VERSION="$(${curl_github} 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}.zip" \ + && export URL="https://github.com/${REPOSITORY}/releases/download/${VERSION}/${PKG}" \ + && export DIR="/usr/local/bin" \ + && 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}" \ + && ${curl} ${URL} --output /tmp/${PKG} \ + && sudo unzip /tmp/${PKG} -d /tmp/ \ + && sudo mv /tmp/bin/linux_${ARCH}/${NAME} ${DIR}/${NAME} \ + && ${TEST} \ + && ${dir_clean} \ + && echo diff --git a/docker/slim/Dockerfile b/docker/slim/Dockerfile index 3d55dff..f820524 100644 --- a/docker/slim/Dockerfile +++ b/docker/slim/Dockerfile @@ -294,6 +294,33 @@ RUN echo \ && ~/.tmux/plugins/tpm/bin/install_plugins || true \ && echo +################################################################################## +# Install runme cli +# - https://github.com/stateful/runme/releases +RUN echo \ + && export NAME="runme" \ + && export TEST="${NAME} --version" \ + && export REPOSITORY="stateful/runme" \ + && 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 "x86_64"; else if ($1 == "aarch64" || $1 == "arm64") print "arm64"; else print "unknown" }') \ + && export PKG="${NAME}_linux_${ARCH}.deb" \ + && 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 "---------------------------------------------------------"\ + && ${apt_update} \ + && ${curl} ${URL} --output /tmp/${PKG} \ + && DEBIAN_FRONTEND=noninteractive sudo -E apt-get install -y --no-install-recommends -o Dpkg::Options::='--force-confold' /tmp/${PKG} \ + && bash -c "${apt_clean}" \ + && ${dir_clean} \ + && ${TEST} \ + && echo + ################################################################################ # Install Pulumi CLI, ESC, & CTL @@ -382,9 +409,9 @@ HEALTHCHECK --interval=120s --timeout=30s --start-period=5s --retries=3 CMD [ "t ################################################################################# # Image Metadata LABEL tag="slim" -LABEL name="Devcontainer" -LABEL io.k8s.display-name="Pulumi" -LABEL org.opencontainers.image.authors="github.com/pulumi" -LABEL org.opencontainers.image.source="https://github.com/pulumi/devcontainer" +LABEL name="ContainerCraft Konductor Devcontainer" +LABEL io.k8s.display-name="ContainerCraft Konductor Devcontainer" +LABEL org.opencontainers.image.authors="github.com/ContainerCraft" +LABEL org.opencontainers.image.source="https://github.com/containercraft/devcontainer" LABEL org.opencontainers.image.licenses="APACHE-2.0" LABEL distribution-scope="public"