You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.5 KiB
2.5 KiB
Build Dockerfile
-
Dockerfile for nodejs app (Size: 250MB)
FROM node:12-alpine # Create app directory WORKDIR /app # Install app dependencies # A wildcard is used to ensure both package.json AND package-lock.json are copied # where available (npm@5+) COPY package*.json ./ RUN npm install --only=production # If you are building your code for production # RUN npm ci --only=production # Bundle app source COPY . . EXPOSE 5009 CMD [ "node", "server.js" ] -
use multi-stage (Size: 195MB)
# in comparison with node:12-alpine image build, this will reduce by further 50MB # node:12-alpine : 257MB # multistage alpine:3.12 : 195MB # # ------base node------ FROM alpine:3.12 AS base # install node RUN apk add --no-cache nodejs nodejs-npm # Create app directory WORKDIR /app # Install app dependencies # A wildcard is used to ensure both package.json AND package-lock.json are copied # where available (npm@5+) COPY package*.json ./ # ------dependencies------- FROM base AS dependencies RUN npm install --only=production # If you are building your code for production # RUN npm ci --only=production # copy production node_modules aside RUN cp -R node_modules prod_node_modules # -----test------ # add npm run test if needed # -----release-------- FROM base AS release # copy production node_modules COPY --from=dependencies /app/prod_node_modules ./node_modules # Bundle app source COPY . . EXPOSE 5009 CMD [ "node", "server.js" ] -
build
$ docker build [-f Dockerfile] . -t razerpay/visa-backend-api // push image $ docker push razerpay/visa-backend-api -
run
$ docker run razerpay/visa-backend-api // enter shell $ docker exec -it <container-name> sh -
docker-compose
version: '2' services: api: image: razerpay/visa-backend-api-multi:latest #build: . #command: npm server.js volumes: - ./runconfig/default.json:/app/config/default.json - ./runconfig/ca.crt:/app/config/ca.crt - ./runconfig/root.crt:/app/config/root.crt ports: - "5009:5009" #depends_on: # - postgres #environment: # DATABASE_URL: postgres://todoapp@postgres/todos #postgres: # image: postgres:9.6.2-alpine # environment: # POSTGRES_USER: todoapp # POSTGRES_DB: todos -
run docker-compose
$ docker-compose up -d