FROM debian:stable-slim
LABEL maintainer="lachlan-00"

ENV DEBIAN_FRONTEND=noninteractive
ENV MYSQL_USER=admin
ENV MYSQL_PASS=**Random**
ENV DISABLE_INOTIFYWAIT_CLEAN=0
ARG VERSION=8.0.0
ARG PHPVERSION=8.5

RUN     sh -c 'echo "Types: deb\n# http://snapshot.debian.org/archive/debian/20230612T000000Z\nURIs: http://deb.debian.org/debian\nSuites: stable stable-updates\nComponents: main contrib non-free\nSigned-By: /usr/share/keyrings/debian-archive-keyring.gpg\n\nTypes: deb\n# http://snapshot.debian.org/archive/debian-security/20230612T000000Z\nURIs: http://deb.debian.org/debian-security\nSuites: stable-security\nComponents: main\nSigned-By: /usr/share/keyrings/debian-archive-keyring.gpg\n" > /etc/apt/sources.list.d/debian.sources' \
    &&  apt-get -q -q update \
    &&  apt-get -q -q -y install --no-install-recommends wget lsb-release ca-certificates extrepo \
    &&  extrepo enable sury \
    &&  apt-get update \
    &&  apt-get -q -q -y install --no-install-recommends \
          apache2 \
          beets \
          cron \
          ffmpeg \
          flac \
          git \
          gosu \
          graphicsmagick-imagemagick-compat \
          inotify-tools \
          lame \
          libavcodec-extra \
          libev-libevent-dev \
          libicu-dev \
          libfaac-dev \
          libmp3lame-dev \
          libtheora-dev \
          libvorbis-dev \
          libvpx-dev \
          locales \
          logrotate \
          ocrad \
          default-mysql-client \
          npm \
          php${PHPVERSION} \
          php${PHPVERSION}-ctype \
          php${PHPVERSION}-curl \
          php${PHPVERSION}-dom \
          php${PHPVERSION}-gd \
          php${PHPVERSION}-gettext \
          php${PHPVERSION}-gmp \
          php${PHPVERSION}-http \
          php${PHPVERSION}-iconv \
          php${PHPVERSION}-intl \
          php${PHPVERSION}-ldap \
          php${PHPVERSION}-mbstring \
          php${PHPVERSION}-mysql \
          php${PHPVERSION}-pdo \
          php${PHPVERSION}-simplexml \
          php${PHPVERSION}-sockets \
          php${PHPVERSION}-xml \
          php${PHPVERSION}-xmlreader \
          php${PHPVERSION}-xmlwriter \
          php${PHPVERSION}-zip \
          php-pear \
          pwgen \
          supervisor \
          vorbis-tools \
          zip \
          unzip \
          git \
    &&  update-alternatives --set php /usr/bin/php${PHPVERSION} \
    &&  phpenmod -v ${PHPVERSION} xml \
    &&  rm -rf /var/www/html/* /etc/apache2/sites-enabled/* /var/lib/apt/lists/* \
    &&  rm -rf /var/www /etc/apache2/sites-enabled/* /var/lib/apt/lists/* \
    &&  mkdir -p /var/log/ampache \
    &&  chown -R www-data:www-data /var/log/ampache \
    &&  ln -s /etc/apache2/sites-available/001-ampache.conf /etc/apache2/sites-enabled/ \
    &&  a2enmod rewrite headers \
    &&  sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen \
    &&  locale-gen \
    &&  apt-get -qq purge \
          extrepo \
          lsb-release \
          unzip \
          wget \
    &&  apt-get -qq autoremove

VOLUME ["/var/log/ampache", "/var/www/html"]
EXPOSE 80

# composer for in-container dependency management (used by run.sh when vendor/ is missing)
COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer

COPY docker/data/bin/apache2.sh docker/data/bin/run.sh docker/data/bin/composer.sh /usr/local/bin/
COPY docker/data/sites-enabled/001-ampache.conf /etc/apache2/sites-available/
COPY docker/data/conf.d/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# dev-tuned php settings for both the apache and cli SAPIs
COPY docker/data/php/99-ampache-dev.ini /etc/php/${PHPVERSION}/apache2/conf.d/99-ampache-dev.ini
COPY docker/data/php/99-ampache-dev.ini /etc/php/${PHPVERSION}/cli/conf.d/99-ampache-dev.ini

# strip any CR line endings (Windows checkouts) so the scripts run, then make executable
RUN  sed -i 's/\r$//' /usr/local/bin/*.sh \
    &&  chmod +x /usr/local/bin/*.sh

CMD ["run.sh"]
