Skip to content

Instantly share code, notes, and snippets.

@vinicius73
Created November 12, 2021 15:06
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vinicius73/229aff839fd7803f2a009532aed788eb to your computer and use it in GitHub Desktop.
Save vinicius73/229aff839fd7803f2a009532aed788eb to your computer and use it in GitHub Desktop.
Caddy SPA Docker Build
{
admin off
log {
format json
}
}
:80 {
try_files {path} /
header /assets/img/* Cache-Control max-age=31536000
header /assets/js/* Cache-Control max-age=31536000
header /assets/css/* Cache-Control max-age=31536000
header /assets/fonts/* Cache-Control max-age=31536000
encode gzip
root * /usr/share/caddy
file_server
}
#!/bin/sh
set -e
APP_VERSION=${BITBUCKET_TAG}
BUILD_NUMBER=${BITBUCKET_BUILD_NUMBER:=unknown}
BUILDER=${USER}@$(hostname 2> /dev/null && echo $? | tail -0 || echo '@ci')
BUILD_DATE=$(date '+%Y-%m-%d__%H:%M:%S')
COMMIT=$(git rev-parse HEAD 2> /dev/null && echo $? | tail -0 || echo "$BITBUCKET_COMMIT")
BRANCH=$(git rev-parse --abbrev-ref HEAD 2> /dev/null && echo $? | tail -0 || echo '')
if [ -z "$APP_VERSION" ]
then
APP_VERSION=$(node -p "require('./package.json').version" 2> /dev/null && echo $? | tail -0 || echo "$BUILD_NUMBER@$BUILD_DATE")
fi
if [ -z "$BRANCH" ]
then
BRANCH=${BITBUCKET_TAG:=$BITBUCKET_BRANCH}
fi
if [ -z "$DOCKER_BUILDKIT" ]
then
if [ -z "$CI" ]
then
DOCKER_BUILDKIT=1
fi
fi
GIT_HASH=${BRANCH}@${COMMIT}
echo '@> Building image...'
echo "@=> APP_VERSION=${APP_VERSION}"
echo "@=> GIT_HASH=${GIT_HASH}"
echo "@=> BUILDER=${BUILDER}"
echo "@=> BUILD_DATE=${BUILD_DATE}"
echo "@=> BUILD_NUMBER=${BUILD_NUMBER}"
echo "@=> DOCKER_BUILDKIT=${DOCKER_BUILDKIT}"
echo ''
DOCKER_BUILDKIT=${DOCKER_BUILDKIT} docker build --progress=plain -t my-app:latest \
--build-arg APP_VERSION="${APP_VERSION}" \
--build-arg GIT_HASH="${GIT_HASH}" \
--build-arg BUILDER="${BUILDER}" \
--build-arg BUILD_DATE="${BUILD_DATE}" \
--build-arg BUILD_NUMBER=${BUILD_NUMBER} \
.
echo '@> Done'
FROM node:14-alpine as builder
WORKDIR /app
# dependencies
COPY ./package.* ./yarn.* /app/
RUN yarn --non-interactive
# build
COPY src/ src/
RUN yarn build
FROM caddy:2.4-alpine
COPY --from=builder /app/dist /usr/share/caddy
COPY Caddyfile /etc/caddy/Caddyfile
EXPOSE 80
ARG APP_VERSION=unknown
ARG GIT_HASH=unknown
ARG BUILDER=unknown
ARG BUILD_NUMBER=unknown
ARG BUILD_DATE=unknown
# Labels.
LABEL name="my-app-name" \
description="My App Description" \
vcs.url="https://bitbucket.org/company/my-app" \
vcs.ref=$GIT_HASH \
version=$APP_VERSION \
build.date=$BUILD_DATE \
build.number=$BUILD_NUMBER \
build.builder=$BUILDER
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment