FROM alpine:3.6 AS build
MAINTAINER Jan Grewe <jan@faked.org>

# build packages
RUN apk update && \
  apk add --virtual=build-dependencies \
    bash \
    db-dev \
    expat-dev \
    g++ \
    gcc \
    icu-dev \
    libxml2-dev \
    make \
    perl-dev

# runtime packages
RUN apk add --no-cache \
  bzip2 \
  curl \
  db \
  expat \
  git \
  icu-libs \
  nodejs \
  patch \
  perl \
  perl-crypt-rijndael \
  perl-dbd-pg \
  perl-db_file \
  perl-net-ssleay \
  postgresql-client \
  postgresql-dev \
  procps \
  redis \
  tar \
  wget \
  yarn

ARG MB_VERSION="v-2019-01-22"

RUN git clone --depth 1 --branch ${MB_VERSION} https://github.com/metabrainz/musicbrainz-server.git /opt/musicbrainz
RUN cp /opt/musicbrainz/lib/DBDefs.pm.sample /opt/musicbrainz/lib/DBDefs.pm

WORKDIR /opt/musicbrainz

RUN curl -Ls http://cpanmin.us | perl - App::cpanminus
RUN cpanm --installdeps --notest .
RUN cpanm --notest \
  Cache::Memcached::Fast \
  Cache::Memory \
  Catalyst::Plugin::Cache::HTTP \
  Catalyst::Plugin::StackTrace \
  Digest::MD5::File \
  FCGI \
  FCGI::ProcManager \
  Plack::Handler::Starlet \
  Plack::Middleware::Debug::Base \
  Server::Starter \
  Starlet \
  Starlet::Server \
  Term::Size::Any

RUN yarn install --ignore-engines && \
  yarn cache clean

RUN ./script/compile_resources.sh

ADD start.sh .

CMD ["/bin/bash", "/opt/musicbrainz/start.sh"]