Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # take default image of node
- FROM node:9.8.0
- # set build args
- ARG NODE_ENV
- ARG PORT
- ARG TIMEOUT
- ARG REDIS_HOST
- ARG REDIS_PORT
- ARG REDIS_PASSWORD
- ARG MONGODB_HOST
- ARG MONGODB_PORT
- ARG KEYMETRICS_PUBLIC
- ARG KEYMETRICS_SECRET
- ARG PRIVATE_KEY
- # set env vars
- ENV NODE_ENV=$NODE_ENV
- ENV PORT=$PORT
- ENV TIMEOUT=$TIMEOUT
- ENV REDIS_HOST=$REDIS_HOST
- ENV REDIS_PORT=$REDIS_PORT
- ENV REDIS_PASSWORD=$REDIS_PASSWORD
- ENV MONGODB_HOST=$MONGODB_HOST
- ENV MONGODB_PORT=$MONGODB_PORT
- ENV MONGODB_USERNAME=$MONGODB_USERNAME
- ENV MONGODB_PASSWORD=$MONGODB_PASSWORD
- ENV KEYMETRICS_PUBLIC=$KEYMETRICS_PUBLIC
- ENV KEYMETRICS_SECRET=$KEYMETRICS_SECRET
- ENV PRIVATE_KEY=$PRIVATE_KEY
- # install pm2
- RUN yarn global add pm2
- # install pm2 modules
- RUN pm2 install pm2-redis && \
- pm2 install pm2-mongodb && \
- pm2 install pm2-logrotate && \
- pm2 install pm2-server-monit
- # configure pm2-redis
- RUN pm2 set pm2-redis:ip ${REDIS_HOST} && \
- pm2 set pm2-redis:port ${REDIS_PORT} && \
- pm2 set pm2-redis:password ${REDIS_PASSWORD}
- # configure pm2-mongodb
- RUN pm2 set pm2-mongodb:ip ${MONGODB_HOST} && \
- pm2 set pm2-mongodb:port ${MONGODB_PORT} && \
- pm2 set pm2-mongodb:username ${MONGODB_USERNAME} && \
- pm2 set pm2-mongodb:password ${MONGODB_PASSWORD}
- # create app directory in container
- RUN mkdir -p /app
- # set /app directory as default working directory
- WORKDIR /app
- # only copy package.json initially so that `RUN yarn` layer is recreated only
- # if there are changes in package.json
- ADD package.json yarn.lock /app/
- # don’t generate a yarn.lock lockfile
- RUN yarn --pure-lockfile
- # copy all file from current dir to /app in container
- COPY . /app/
- # build files in /dist
- RUN yarn build
- # set /app/dist directory as default working directory
- WORKDIR /app/dist
- # install only production dependencies and don’t generate a yarn.lock lockfile
- RUN yarn --production --pure-lockfile
- # expose port 4040
- EXPOSE 4040
- # cmd to start service
- CMD ["pm2-runtime", "process.yml"]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement