Advertisement
Guest User

Dockerfile

a guest
Mar 15th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. # take default image of node
  2. FROM node:9.8.0
  3.  
  4. # set build args
  5. ARG NODE_ENV
  6. ARG PORT
  7. ARG TIMEOUT
  8. ARG REDIS_HOST
  9. ARG REDIS_PORT
  10. ARG REDIS_PASSWORD
  11. ARG MONGODB_HOST
  12. ARG MONGODB_PORT
  13. ARG KEYMETRICS_PUBLIC
  14. ARG KEYMETRICS_SECRET
  15. ARG PRIVATE_KEY
  16.  
  17. # set env vars
  18. ENV NODE_ENV=$NODE_ENV
  19. ENV PORT=$PORT
  20. ENV TIMEOUT=$TIMEOUT
  21. ENV REDIS_HOST=$REDIS_HOST
  22. ENV REDIS_PORT=$REDIS_PORT
  23. ENV REDIS_PASSWORD=$REDIS_PASSWORD
  24. ENV MONGODB_HOST=$MONGODB_HOST
  25. ENV MONGODB_PORT=$MONGODB_PORT
  26. ENV MONGODB_USERNAME=$MONGODB_USERNAME
  27. ENV MONGODB_PASSWORD=$MONGODB_PASSWORD
  28. ENV KEYMETRICS_PUBLIC=$KEYMETRICS_PUBLIC
  29. ENV KEYMETRICS_SECRET=$KEYMETRICS_SECRET
  30. ENV PRIVATE_KEY=$PRIVATE_KEY
  31.  
  32. # install pm2
  33. RUN yarn global add pm2
  34.  
  35. # install pm2 modules
  36. RUN pm2 install pm2-redis && \
  37. pm2 install pm2-mongodb && \
  38. pm2 install pm2-logrotate && \
  39. pm2 install pm2-server-monit
  40.  
  41. # configure pm2-redis
  42. RUN pm2 set pm2-redis:ip ${REDIS_HOST} && \
  43. pm2 set pm2-redis:port ${REDIS_PORT} && \
  44. pm2 set pm2-redis:password ${REDIS_PASSWORD}
  45.  
  46. # configure pm2-mongodb
  47. RUN pm2 set pm2-mongodb:ip ${MONGODB_HOST} && \
  48. pm2 set pm2-mongodb:port ${MONGODB_PORT} && \
  49. pm2 set pm2-mongodb:username ${MONGODB_USERNAME} && \
  50. pm2 set pm2-mongodb:password ${MONGODB_PASSWORD}
  51.  
  52. # create app directory in container
  53. RUN mkdir -p /app
  54.  
  55. # set /app directory as default working directory
  56. WORKDIR /app
  57.  
  58. # only copy package.json initially so that `RUN yarn` layer is recreated only
  59. # if there are changes in package.json
  60. ADD package.json yarn.lock /app/
  61.  
  62. # don’t generate a yarn.lock lockfile
  63. RUN yarn --pure-lockfile
  64.  
  65. # copy all file from current dir to /app in container
  66. COPY . /app/
  67.  
  68. # build files in /dist
  69. RUN yarn build
  70.  
  71. # set /app/dist directory as default working directory
  72. WORKDIR /app/dist
  73.  
  74. # install only production dependencies and don’t generate a yarn.lock lockfile
  75. RUN yarn --production --pure-lockfile
  76.  
  77. # expose port 4040
  78. EXPOSE 4040
  79.  
  80. # cmd to start service
  81. CMD ["pm2-runtime", "process.yml"]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement