# -------------------
# The build container
# -------------------
FROM debian:buster-slim AS build

# Update system packages and install build dependencies.
RUN apt-get update && \
  apt-get upgrade -y && \
  apt-get install -y \
  build-essential \
  cmake \
  libglib2.0-dev \
  python \
  python-dateutil \
  python-fastkml \
  python-flask \
  python-gdal \
  python-numpy \
  python-pip \
  python-requests \
  python-serial \
  python-setuptools \
  python-shapely \
  unzip && \
  rm -rf /var/lib/apt/lists/*

# Install additional Python packages that aren't available through apt-get.
RUN pip --no-cache-dir install \
  flask-socketio \
  pytz

# Download and install cusf_predictor_wrapper, and build predictor binary.
ADD https://github.com/darksidelemm/cusf_predictor_wrapper/archive/master.zip /root/cusf_predictor_wrapper-master.zip
RUN unzip /root/cusf_predictor_wrapper-master.zip -d /root && \
  rm /root/cusf_predictor_wrapper-master.zip && \
  cd /root/cusf_predictor_wrapper-master && \
  python setup.py install && \
  cd src && \
  mkdir build && \
  cd build && \
  cmake ../ && \
  make

# -------------------------
# The application container
# -------------------------
FROM debian:buster-slim
EXPOSE 5001/tcp

# Update system packages and install build dependencies.
RUN apt-get update && \
  apt-get upgrade -y && \
  apt-get install -y \
  libglib2.0 \
  python \
  python-dateutil \
  python-fastkml \
  python-flask \
  python-gdal \
  python-numpy \
  python-requests \
  python-serial \
  python-shapely \
  unzip && \
  rm -rf /var/lib/apt/lists/*

# Copy any additional Python packages from the build container.
COPY --from=build /usr/local/lib/python2.7/dist-packages /usr/local/lib/python2.7/dist-packages

# Copy predictor binary and get_wind_data.py from the build container.
COPY --from=build /root/cusf_predictor_wrapper-master/src/build/pred /opt/chasemapper/
COPY --from=build /root/cusf_predictor_wrapper-master/apps/get_wind_data.py /opt/chasemapper/

# Copy in chasemapper.
COPY . /opt/chasemapper

# Run horusmapper.py.
WORKDIR /opt/chasemapper
CMD ["python", "/opt/chasemapper/horusmapper.py"]
