57 lines
1.5 KiB
Text
57 lines
1.5 KiB
Text
![]() |
FROM keymetrics/pm2:latest-alpine
|
||
|
|
||
|
# For documentation, see https://freesewing.dev/containers/backend
|
||
|
|
||
|
# Extra build argument for when you're using a private NPM registry
|
||
|
ARG npm_registry
|
||
|
|
||
|
# Environment variables
|
||
|
ENV http_proxy=$http_proxy \
|
||
|
https_proxy=$https_proxy \
|
||
|
no_proxy=$no_proxy \
|
||
|
NPM_CONFIG_REGISTRY=$npm_registry \
|
||
|
FS_BACKEND=$FS_BACKEND \
|
||
|
FS_SITE=$FS_SITE \
|
||
|
FS_MONGO_URI=$FS_MONGO_URI \
|
||
|
FS_ENC_KEY=$FS_ENC_KEY \
|
||
|
FS_JWT_ISSUER=$FS_JWT_ISSUER \
|
||
|
FS_SMTP_HOST=$FS_SMTP_HOST \
|
||
|
FS_SMTP_USER=$FS_SMTP_USER \
|
||
|
FS_SMTP_PASS=$FS_SMTP_PASS \
|
||
|
FS_GITHUB_CLIENT_ID=$FS_GITHUB_CLIENT_ID \
|
||
|
FS_GITHUB_CLIENT_SECRET=$FS_GITHUB_CLIENT_SECRET \
|
||
|
FS_GOOGLE_CLIENT_ID=$FS_GOOGLE_CLIENT_ID \
|
||
|
FS_GOOGLE_CLIENT_SECRET=$FS_GOOGLE_CLIENT_SECRET \
|
||
|
FS_STATIC=/storage/static \
|
||
|
FS_STORAGE=/storage/api \
|
||
|
NODE_ENV=production
|
||
|
|
||
|
# Install OS dependencies (needed to compile sharp)
|
||
|
RUN apk add git python make g++
|
||
|
|
||
|
# Create storage structure
|
||
|
RUN mkdir -p /storage/static && mkdir /storage/api && mkdir -p /backend/src
|
||
|
|
||
|
# Creat and set workdir
|
||
|
WORKDIR /backend
|
||
|
|
||
|
# Add user to run the app
|
||
|
RUN addgroup -S freesewing \
|
||
|
&& adduser -S freesewing -G freesewing \
|
||
|
&& chown -R freesewing .
|
||
|
|
||
|
# Copy source
|
||
|
COPY ./package.json .
|
||
|
COPY ./package-lock.json* .
|
||
|
COPY ./src ./src/
|
||
|
|
||
|
# Install Node.js dependencies (will also compile sharp)
|
||
|
RUN npm install && npm install -g backpack-core
|
||
|
|
||
|
# Build code
|
||
|
RUN backpack build
|
||
|
|
||
|
# Drop privleges and run app
|
||
|
USER freesewing
|
||
|
CMD pm2-runtime /backend/build/main.js
|