cms/strapi/Dockerfile

67 lines
1.5 KiB
Docker

FROM node:18-alpine as build
ARG APP_DIRECTORY
ARG NODE_ENV
ARG STRAPI_ADMIN_BACKEND_URL
ARG ADMIN_PATH
# Set dynamic environment variables for the npm build script
ENV NODE_ENV ${NODE_ENV}
ENV STRAPI_ADMIN_BACKEND_URL ${STRAPI_ADMIN_BACKEND_URL}
ENV ADMIN_PATH ${ADMIN_PATH}
# Set working directory
WORKDIR ${APP_DIRECTORY}
# Upgrade & install system dependencies
RUN apk update
RUN apk add --no-cache \
build-base gcc autoconf automake zlib-dev libpng-dev vips-dev git \
> /dev/null 2>&1
# Copy dependency files
COPY package.json package-lock.json ./
# Install production dependencies
RUN npm config set registry https://registry.npmjs.org/
RUN npm install -g node-gyp
RUN npm ci --omit=dev --loglevel verbose
# Add node_modules/.bin to PATH
ENV PATH ${APP_DIRECTORY}/node_modules/.bin:$PATH
# Copy source files and build
WORKDIR ${APP_DIRECTORY}/app
COPY . .
RUN npm run build
FROM node:18-alpine as production
ARG APP_DIRECTORY
ARG NODE_ENV
# Set dynamic environment variables
ENV NODE_ENV ${NODE_ENV}
# Upgrade & install image processing dependency
RUN apk upgrade --no-cache && \
apk add --no-cache vips-dev
# Copy node_modules over to the parent directory
WORKDIR ${APP_DIRECTORY}
COPY --from=build ${APP_DIRECTORY}/node_modules ./node_modules
# Copy app files
WORKDIR ${APP_DIRECTORY}/app
COPY --from=build ${APP_DIRECTORY}/app .
# Add node_modules/.bin to PATH
ENV PATH ${APP_DIRECTORY}/node_modules/.bin:$PATH
# Set user and group rights
RUN chown -R node:node ${APP_DIRECTORY}/app
# Run as node
USER node
CMD ["npm", "run", "develop"]