Skip to content
Snippets Groups Projects
Select Git revision
  • 99896bbf3d3b70a910723f9b8bfa0fcedcb3a8b3
  • develop default protected
  • simmc-based
  • drill-experiment
  • tg-felipe
  • issue/97
  • issue/63
  • icde-2019-experiments
  • issue/85
  • master protected
  • issue/20
  • refactor/engine
  • issue/6
  • feature/diagrams
  • wip-transformers
15 results

Dockerfile

Blame
  • Lucas Fernandes de Oliveira's avatar
    Issue #53: Add Dockerfile and .dockerignore
    Lucas Fernandes de Oliveira authored
    Signed-off-by: default avatarLucas Fernandes de Oliveira <lfo14@inf.ufpr.br>
    c6f21eeb
    History
    Dockerfile 1.37 KiB
    # Avoid the use of floating tags like: latest, boron, argon and carbon
    ARG VERSION=6.12.2
    FROM node:$VERSION
    
    LABEL autor="C3SL - Centro de Computação Científica e Software Livre"
    
    
    # Node was not designed to run as PID 1 (process in docker run with PID 1).
    # Its recommended to use the flag --init or use tine to start node process
    # in docker
    
    # Add Tini
    ENV TINI_VERSION="v0.16.1" WORKSPACE="/home/node/app/"
    ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
    
    # 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 $WORKSPACE
    RUN \
        chmod +x /tini &&\
        chown -R node:node $WORKSPACE
    
    USER node
    WORKDIR $WORKSPACE
    
    RUN npm install
    
    # Bundle app source
    # COPY copy files as root so chown must be used
    USER root
    COPY . .
    RUN find . -user root | xargs chown node:node
    USER node
    
    VOLUME ["/home/node/app/config"]
    
    EXPOSE 3000
    
    HEALTHCHECK CMD curl -f http://localhost:3000/v1/metrics || exit 1
    
    # Instead of using npm start to start the container, directly put the command
    # that npm start executes.
    # First off this reduces the number of processes running inside of your container
    # Secondly it causes exit signals such as SIGTERM and SIGINT to be received by
    # the Node.js process instead of npm swallowing them.
    
    
    ENTRYPOINT ["/tini", "--"]
    CMD ["node", "index" ]