forked from geolba/tethys.backend
initial commit
This commit is contained in:
commit
4fc3bb0a01
202 changed files with 41729 additions and 0 deletions
55
Dockerfile
Normal file
55
Dockerfile
Normal file
|
@ -0,0 +1,55 @@
|
|||
################## First Stage - Creating base #########################
|
||||
|
||||
# Created a variable to hold our node base image
|
||||
ARG NODE_IMAGE=node:18.14.2-alpine
|
||||
|
||||
|
||||
# Using the variable to create our base image
|
||||
FROM $NODE_IMAGE AS base
|
||||
# Running a command to install dumb-init to handle processes
|
||||
RUN apk --no-cache add dumb-init
|
||||
# Creating folders and changing ownerships
|
||||
RUN mkdir -p /home/node/app && chown node:node /home/node/app
|
||||
# Setting the working directory
|
||||
WORKDIR /home/node/app
|
||||
# Changing the current active user to "node"
|
||||
USER node
|
||||
# # Creating a new folder "tmp"
|
||||
# RUN mkdir tmp
|
||||
|
||||
################## Second Stage - Installing dependencies ##########
|
||||
# In this stage, we will start installing dependencies
|
||||
FROM base AS dependencies
|
||||
# We copy all package.* files to the working directory
|
||||
COPY --chown=node:node ./package*.json ./
|
||||
# We run NPM CI to install the exact versions of dependencies
|
||||
RUN npm ci
|
||||
# Lastly, we copy all the files with active user
|
||||
COPY --chown=node:node . .
|
||||
|
||||
|
||||
################## Third Stage - Building Stage #####################
|
||||
# In this stage, we will start building dependencies
|
||||
FROM dependencies AS build
|
||||
# We run "node ace build" to build the app for production
|
||||
RUN node ace build --production
|
||||
|
||||
|
||||
################## Final Stage - Production #########################
|
||||
# In this final stage, we will start running the application
|
||||
FROM base AS production
|
||||
# Here, we include all the required environment variables
|
||||
# ENV NODE_ENV=production
|
||||
# ENV PORT=$PORT
|
||||
# ENV HOST=0.0.0.0
|
||||
|
||||
# Copy package.* to the working directory with active user
|
||||
COPY --chown=node:node ./package*.json ./
|
||||
# We run NPM CI to install the exact versions of dependencies
|
||||
RUN npm ci --omit=dev
|
||||
# Copy files to the working directory from the build folder the user
|
||||
COPY --chown=node:node --from=build /home/node/app/build .
|
||||
# Expose port
|
||||
EXPOSE $PORT
|
||||
# Run the command to start the server using "dumb-init"
|
||||
CMD [ "dumb-init", "node", "server.js" ]
|
Loading…
Add table
editor.link_modal.header
Reference in a new issue