You've already forked docker-multistep-nodejs-build
Added Dockerfile template and initial README.
This commit is contained in:
64
Dockerfile
Normal file
64
Dockerfile
Normal file
@@ -0,0 +1,64 @@
|
||||
# Step 1: Initial build using the `yarn build` command
|
||||
####################################################
|
||||
FROM node:latest as build
|
||||
|
||||
# Prepare the build directory
|
||||
RUN mkdir -p /opt/build;
|
||||
|
||||
WORKDIR /opt/build
|
||||
|
||||
# If your build step requires environment variables too, add them here
|
||||
|
||||
# Copy required files
|
||||
# Note: I specify each file directly here to avoid copying over
|
||||
# existing /dist folder or other dev files like .env
|
||||
COPY ./src ./src
|
||||
COPY [ "package.json", "yarn.lock", "tsconfig.json", "./" ]
|
||||
|
||||
RUN yarn install --no-progress && yarn build
|
||||
|
||||
|
||||
# Step 2: Fetch production-only dependencies
|
||||
####################################################
|
||||
FROM node:latest as dependencies
|
||||
|
||||
# Set environment to production
|
||||
ENV NODE_ENV='production'
|
||||
|
||||
RUN mkdir -p /opt/build;
|
||||
|
||||
WORKDIR /opt/build
|
||||
|
||||
COPY --from=build [ "/opt/build/package.json", "/opt/build/yarn.lock", "./" ]
|
||||
|
||||
RUN yarn install --production=true --no-progress
|
||||
|
||||
|
||||
# Step 3: Build done, create the deployable/runnable image step
|
||||
####################################################
|
||||
FROM node:slim as release
|
||||
|
||||
# Set environment to production
|
||||
ENV NODE_ENV='production'
|
||||
|
||||
# Prepare the app directory
|
||||
RUN mkdir -p /opt/app;
|
||||
|
||||
WORKDIR /opt/app
|
||||
|
||||
# Add any and all environment variables your application needs here:
|
||||
ENV JWT_SECRET= \
|
||||
PORT=80
|
||||
|
||||
# Copy dependencies and compiled application from previous steps
|
||||
COPY --from=dependencies /opt/build/node_modules /opt/app/node_modules
|
||||
COPY --from=build /opt/build/dist /opt/app/dist
|
||||
|
||||
WORKDIR /opt/app
|
||||
|
||||
# Run the application using node
|
||||
ENTRYPOINT [ "node", "dist/index.js" ]
|
||||
|
||||
# Alternatively: Run your application using Forever (ensure this is installed as a dependency first)
|
||||
# See: https://github.com/foreversd/forever
|
||||
# ENTRYPOINT [ "./node_modules/.bin/forever", "./dist/index.js" ]
|
||||
Reference in New Issue
Block a user