Browse Source

Added Dockerfile. Fixed tscconfig file

master
David Ludwig 3 years ago
parent
commit
ca99827a3f
2 changed files with 104 additions and 1 deletions
  1. +98
    -0
      Dockerfile
  2. +6
    -1
      tsconfig.json

+ 98
- 0
Dockerfile View File

@ -0,0 +1,98 @@
# --------------------------------------------------------------------------------------------------
# NOTE: This Dockerfile was designed to be run with BuildKit.
#
# Enable BuildKit using:
# $ export DOCKER_BUILDKIT=1
# $ export COMPOSE_DOCKER_CLI_BUILD=1
# --------------------------------------------------------------------------------------------------
# The service to build
ARG SERVICE
# The base image to use
ARG BASE=alpine
# Base Definitions ---------------------------------------------------------------------------------
# Alpine base definition
FROM node:14-alpine AS base-alpine
RUN mkdir /var/autoplex && chown node:node -R /var/autoplex
# Alpine dev definition
FROM base-alpine AS base-alpine-dev
RUN apk add build-base python3
# Slim base definition
FROM node:14-slim AS base-slim
RUN mkdir /var/autoplex && chown node:node -R /var/autoplex
RUN apt-get update
RUN apt-get full-upgrade -y
RUN apt-get install -y libasound2 iputils-ping curl gnupg1 apt-transport-https dirmngr
RUN apt-get autoremove --purge -y
RUN rm -rf /var/lib/apt/lists/*
# Slim dev definition
FROM base-slim AS base-slim-dev
# Development Image --------------------------------------------------------------------------------
# Define the base image
FROM base-${BASE}-dev AS dev-base
ARG SERVICE
WORKDIR /app
ENV PATH "/app/node_modules/.bin:/app/services/${SERVICE}/node_modules/.bin:$PATH"
COPY lerna.json package.json yarn.lock ./
RUN yarn install
COPY tsconfig*.json ./
# Define the dev image
FROM dev-base AS dev
ARG SERVICE
# RUN ln -s /opt/app/services/${SERVICE} /app
WORKDIR /app/services/${SERVICE}
CMD [ "yarn", "run", "start:dev" ]
# Build Definitions --------------------------------------------------------------------------------
# Create the builder image with all dependencies
FROM base-${BASE}-dev AS builder-base
WORKDIR /app
RUN yarn global add lerna typescript rimraf
COPY docker/scripts docker/scripts
COPY lerna.json package.json tsconfig*.json ./
RUN yarn install
COPY api api
COPY packages packages
# Copy service package.json and patch files if they exist
FROM builder-base AS builder
ARG SERVICE
COPY services/${SERVICE}/package.json ./services/${SERVICE}/
COPY services/${SERVICE}/patches* ./services/${SERVICE}/patches
# Cache an image containing only the prod-dependencies
FROM builder AS prod-deps
ARG BASE
RUN lerna bootstrap -- --production --no-optional
RUN yarn run export:deps ${BASE}
# Build the service
FROM builder AS build
ARG BASE
ARG SERVICE
COPY services/${SERVICE} ./services/${SERVICE}
RUN lerna clean --yes && lerna bootstrap && lerna run clean && lerna run build
RUN yarn run export:builds ${BASE}
# Return to base image with the compiled files and production dependencies
FROM base-${BASE} AS prod
ARG SERVICE
WORKDIR /app
COPY --from=prod-deps /app/build /opt
COPY --from=build /app/build /opt
RUN for link in $(find /opt/services -type l); do dir=$(readlink -f $link); rm $link; ln -s $dir $link; done
RUN mv /opt/services/${SERVICE}/* /app && rm -rf /opt/services
# TODO: Should remove unnecessary packages that were included
# Default entrypoint
CMD [ "yarn", "run", "start" ]

+ 6
- 1
tsconfig.json View File

@ -97,5 +97,10 @@
/* Completeness */
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
"skipLibCheck": true /* Skip type checking all .d.ts files. */
}
},
"exclude": [
"/**/node_modules",
"/**dist/**/*.ts",
"/**/test/**/*.ts"
]
}

Loading…
Cancel
Save