 #  /********************************************************************************
 #  * Copyright (c) 2020 Contributors to the Eclipse Foundation
 #  *
 #  * See the NOTICE file(s) distributed with this work for additional
 #  * information regarding copyright ownership.
 #  *
 #  * This program and the accompanying materials are made available under the
 #  * terms of the Eclipse Public License v. 2.0 which is available at
 #  * http://www.eclipse.org/legal/epl-2.0.
 #  *
 #  * SPDX-License-Identifier: EPL-2.0
 #  ********************************************************************************/

 # NODEJS BASE IMAGE
FROM node:12.16.3-alpine3.11
LABEL maintainer = "dimitrios.chalepakis@pta.de"

# set working directory
WORKDIR /app

# SET NPM PROXY
#RUN npm config set proxy http://webproxy3.pta.de:8080
#RUN npm config set https-proxy http://webproxy3.pta.de:8080

# INSTALL http-server which is a simple, zero-configuration command-line http server.
RUN npm i http-server -g

# INSTALL AND CACHE APP DEPENDENCIES
COPY package.json /app/package.json
RUN npm install