FROM alpine:latest as downloader

ARG ONEC_USERNAME
ARG ONEC_PASSWORD
ARG ONEC_VERSION
ENV installer_type=server-crs
ENV downloads=downloads/platform83/${ONEC_VERSION}
ENV RAS_PORT=1545
ENV RAS_CLUSTER_ADDRESS=''
ENV SRV1CV8_KEYTAB=/opt/1cv8/x86_64/${ONEC_VERSION}/usr1cv8.keytab
ENV SRV1CV8_PORT=1540
ENV SRV1CV8_REGPORT=1541
ENV SRV1CV8_RANGE=1560:1591
ENV SRV1CV8_DEBUG=-debug
ENV SRV1CV8_DATA=/home/usr1cv8/.1cv8/1C/1cv8
ENV SRV1CV8_SECLEV=0
ENV SRV1CV8_PINGPERIOD=1000
ENV SRV1CV8_PINGTIMEOUT=5000
ARG gosu_ver=1.11
ARG nls_enabled=false
ENV nls=$nls_enabled

COPY ./webserver/scripts/download_og.sh /download_og.sh

WORKDIR /tmp
COPY ./webserver/distr ./${downloads}
RUN rm ./${downloads}/.gitkeep \
  && rm -rf ${downloads}/thin.client*.tar.gz \
  && rm -rf ${downloads}/client*.tar.gz \
  && rm -rf ${downloads}/1c_edt*.tar.gz \
  && if [ -z "$(ls -A ${downloads})" ]; then \
  apk --no-cache add bash curl grep tar \
  && set -x \
  && sync; /download_og.sh; \
  fi \
  && rm -rf ${downloads}/*thin*.tar.gz \
  && ls ${downloads} \
  && for file in ${downloads}/*.tar.gz; do tar -xzf "$file"; done \
  && rm -rf ${downloads}/*.*

FROM ubuntu:20.04 as base

# Указываем рабочий каталог и копируем конфигурационный файл раскладки
WORKDIR /opt/1c-server/
ADD ./webserver/selections.conf ./selections.conf
# Устанавливаем первый пакет зависимостей
RUN apt-get update && apt-get install -yq procps tzdata debconf-utils curl fontconfig unixodbc ttf-mscorefonts-installer libgsf-1-114 keyboard-configuration
# Настраиваем временную зону и раскладку клавиатуры (иначе повиснем на процессе установки)
RUN ln -fs /usr/share/zoneinfo/Europe/Moscow /etc/localtime && debconf-set-selections < selections.conf
RUN dpkg-reconfigure -f noninteractive tzdata
RUN dpkg-reconfigure -f noninteractive keyboard-configuration
# Устанавливаем оставшиеся зависимости
RUN apt-get install -yq geoclue-2.0 gstreamer1.0-plugins-bad
# Правим локаль на русскую
RUN export LANG=ru_RU.UTF-8

ARG ONEC_VERSION
ENV installer_type=server-crs
ARG gosu_ver=1.11
ARG nls_enabled=false
ENV nls=$nls_enabled


COPY ./webserver/scripts/install.sh /install.sh
COPY --from=downloader /tmp/*.* /tmp/
WORKDIR /tmp

SHELL ["/bin/bash", "-c"]
RUN ls . \
  && chmod +x /install.sh \
  && sync; /install.sh

# create symlink to current 1c:enterprise directory
COPY ./webserver/scripts/create-symlink-to-current-1cv8.sh /create-symlink-to-current-1cv8.sh
RUN chmod +x /create-symlink-to-current-1cv8.sh \
  && /create-symlink-to-current-1cv8.sh \
  && rm /create-symlink-to-current-1cv8.sh

ADD https://github.com/tianon/gosu/releases/download/$gosu_ver/gosu-amd64 /bin/gosu

RUN chmod +x /bin/gosu

FROM httpd:2.4

ARG onec_uid="999"
ARG onec_gid="999"

COPY --from=base /opt /opt
COPY --from=base /bin/gosu /bin/gosu

RUN set -xe \
  && apt-get update \
  && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
      locales \
      imagemagick \
      fontconfig \
  && rm -rf \
    /var/lib/apt/lists/* \
    /var/cache/debconf \
  && localedef -i ru_RU -c -f UTF-8 -A /usr/share/locale/locale.alias ru_RU.UTF-8
ENV LANG ru_RU.UTF-8

RUN groupadd -r grp1cv8 --gid=$onec_gid \
  && useradd -r -g grp1cv8 --uid=$onec_uid --home-dir=/home/usr1cv8 --shell=/bin/bash usr1cv8 \
  && mkdir -p /var/log/1C /home/usr1cv8/.1cv8/1C/1cv8/conf /opt/1cv8/current/conf \
  && chown -R usr1cv8:grp1cv8 /var/log/1C /home/usr1cv8

ARG MONO_VERSION=6.12.0.122

RUN apt-get update \
  && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
      ca-certificates \
      gnupg \
      dirmngr \
      wget \
  && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF \
  && echo "deb http://download.mono-project.com/repo/debian stable-buster main" > /etc/apt/sources.list.d/mono-official-stable.list \
  && apt-get update \
  && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
    mono-runtime \
    ca-certificates-mono \
    libmono-i18n4.0-all \
    libmono-system-runtime-serialization4.0-cil \
  && rm -rf /etc/apt/sources.list.d/mono-official-stable.list \
  && apt-get update \
  && cert-sync --user /etc/ssl/certs/ca-certificates.crt \
  && rm -rf  \
    /var/lib/apt/lists/* \
    /var/cache/debconf \
    /tmp/*

# Installing oscript
ARG OVM_REPOSITORY_OWNER=oscript-library
ARG OVM_VERSION=v1.0.0-RC16
ARG ONESCRIPT_VERSION=stable
ARG ONESCRIPT_PACKAGES="autumn winow json autumn-logos"

RUN wget https://github.com/${OVM_REPOSITORY_OWNER}/ovm/releases/download/${OVM_VERSION}/ovm.exe \
  && mv ovm.exe /usr/local/bin/ \
  && echo 'mono /usr/local/bin/ovm.exe "$@"' | tee /usr/local/bin/ovm \
  && chmod +x /usr/local/bin/ovm \
  && ovm use --install ${ONESCRIPT_VERSION}

ENV OSCRIPTBIN=/root/.local/share/ovm/current/bin
ENV PATH="$OSCRIPTBIN:$PATH"

# Update and prepare oscript packages
RUN opm install opm \
  && opm update --all \
  && opm install ${ONESCRIPT_PACKAGES}

COPY ./webserver/docker-entrypoint.sh /winow/
COPY ./webserver/app /opt/app/winow/ 

RUN mkdir -p /opt/app/repo \
  && chmod -R 777 /opt/app/repo

RUN chmod 755 /winow/docker-entrypoint.sh \
  && chmod +x /winow/docker-entrypoint.sh

ENTRYPOINT ["/winow/docker-entrypoint.sh"]

EXPOSE 80
EXPOSE 3333
