Skip to content

Commit

Permalink
Cleanup, use multi-stage Dockerfile to minimize size
Browse files Browse the repository at this point in the history
  • Loading branch information
Chuxel committed Aug 25, 2021
1 parent d082058 commit 0b7c156
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 13 deletions.
6 changes: 3 additions & 3 deletions .devcontainer/cache/before-cache.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#!/bin/bash
#!/usr/bin/env bash

# This file establishes a basline for the reposuitory before any steps in the "prepare.sh"
# This file establishes a basline for the repository before any steps in the "prepare.sh"
# are run. Its just a find command that filters out a few things we don't need to watch.

set -e

SCRIPT_PATH="$(cd "$(dirname $0)" && pwd)"
SCRIPT_PATH="$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)"
SOURCE_FOLDER="${1:-"."}"

cd "${SOURCE_FOLDER}"
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/cache/build-cache-image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

set -e

SCRIPT_PATH="$(cd "$(dirname $0)" && pwd)"
SCRIPT_PATH="$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)"
CONTAINER_IMAGE_REPOSITORY="$1"
BRANCH="${2:-"main"}"

Expand Down
7 changes: 3 additions & 4 deletions .devcontainer/cache/cache-diff.sh
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
#!/bin/bash
#!/usr/bin/env bash

# This file is used to archive off a copy of any differences in the source tree into another location
# in the image. Once the codespace is up, this will be restored into its proper location (which is
# quick and happens parallel to other startup activities)
# in the image. Once the codespace / container is up, this will be restored into its proper location.

set -e

SCRIPT_PATH="$(cd "$(dirname $0)" && pwd)"
SCRIPT_PATH="$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)"
SOURCE_FOLDER="${1:-"."}"
CACHE_FOLDER="${2:-"/usr/local/etc/devcontainer-cache"}"

Expand Down
13 changes: 10 additions & 3 deletions .devcontainer/cache/cache.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# This dockerfile is used to build up from a base image to create an image with cached results of running "prepare.sh".
# Other image contents: https://github.com/microsoft/vscode-dev-containers/blob/master/repository-containers/images/github.com/microsoft/vscode/.devcontainer/base.Dockerfile
FROM mcr.microsoft.com/vscode/devcontainers/repos/microsoft/vscode:dev

# First stage generates the cache tar
FROM mcr.microsoft.com/vscode/devcontainers/repos/microsoft/vscode:dev as cache
ARG USERNAME=node
COPY --chown=${USERNAME}:${USERNAME} . /repo-source-tmp/
RUN mkdir /usr/local/etc/devcontainer-cache \
Expand All @@ -10,5 +11,11 @@ RUN mkdir /usr/local/etc/devcontainer-cache \
cd /repo-source-tmp \
&& .devcontainer/cache/before-cache.sh \
&& .devcontainer/prepare.sh \
&& .devcontainer/cache/cache-diff.sh" \
&& rm -rf /repo-source-tmp
&& .devcontainer/cache/cache-diff.sh"

# Second stage is the acual output that includes only the tar - restore-diff.sh is then fired on postCreateCommand to expand it
FROM mcr.microsoft.com/vscode/devcontainers/repos/microsoft/vscode:dev as dev-container
ARG USERNAME=node
ARG CACHE_FOLDER="/usr/local/etc/devcontainer-cache"
RUN mkdir -p "${CACHE_FOLDER}" && chown "${USERNAME}:${USERNAME}" "${CACHE_FOLDER}"
COPY --from=cache ${CACHE_FOLDER}/cache.tar ${CACHE_FOLDER}/
2 changes: 1 addition & 1 deletion .devcontainer/cache/restore-diff.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash

# This file restores the results of the "prepare.sh" into their proper locations
# once the container has been created. It runs as a postCreateCommand which
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/prepare.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash

# This file contains the steps that should be run when creating the intermediary image that contains
# contents for that should be in the image by default. It will be used to build up from the base image
Expand Down

0 comments on commit 0b7c156

Please sign in to comment.