# Copyright 2020 ETSI
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.

FROM ubuntu:18.04 AS BUILD

RUN DEBIAN_FRONTEND=noninteractive apt-get --yes update && \
    DEBIAN_FRONTEND=noninteractive apt-get --yes install \
    apt-transport-https=1.6.* \
    curl=7.58.* \
    gnupg2=2.2.* \
    nginx=1.14.* \
    software-properties-common=0.96.* \
    xz-utils=5.2.*

RUN curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
    echo "deb https://deb.nodesource.com/node_10.x xenial main" | tee -a /etc/apt/sources.list.d/nodesource.list && \
    apt-get update && \
    apt-get install -y nodejs=10.24.* \
    && rm -rf /var/lib/apt/lists/*

ARG OSM_NGUI_URL

RUN curl $OSM_NGUI_URL -o osm_ngui.deb
RUN dpkg -i ./osm_ngui.deb

WORKDIR /usr/share/osm-ngui
RUN npm install

# Building app.
RUN npm run build

FROM ubuntu:18.04 AS FINAL

RUN DEBIAN_FRONTEND=noninteractive apt-get --yes update && \
    DEBIAN_FRONTEND=noninteractive apt-get --yes install \
    nginx=1.14.* && \
    rm -rf /var/lib/apt/lists/*

# Removing the Nginx default page.
RUN rm -rf /usr/share/nginx/html/*

# Copying Nginx configuration
COPY --from=BUILD /usr/share/osm-ngui/nginx/nginx.conf /etc/nginx/sites-available/default

# Copying angular build to Nginx default page.
COPY --from=BUILD /usr/share/osm-ngui/dist/osm /usr/share/nginx/html

EXPOSE 80

HEALTHCHECK --start-period=130s --interval=10s --timeout=5s --retries=12 \
  CMD curl --silent --fail localhost:80 || exit 1

# Starting server.
CMD ["nginx", "-g", "daemon off;"]
