1
0
Fork 0
freesewing/sites/backend/Dockerfile

57 lines
1.5 KiB
Text
Raw Normal View History

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