FROM elixir:1.5.2
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list
RUN apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8

RUN apt-get update && apt-get install -y --no-install-recommends \
   re2c \
   git \
   libxml2-dev \
   libxslt-dev \
   python \
   build-essential \
   make \
   cmake \
   gcc \
   python-dev \
   locales \
   python-pip \
   doxygen \
   python-software-properties \
   software-properties-common \
   postgresql-9.5 \
   postgresql-client-9.5 \
   postgresql-contrib-9.5 \
   pv \
   sudo

RUN curl -sL https://deb.nodesource.com/setup_6.x | bash && apt-get install -y nodejs
RUN pip install --upgrade youtube_dl
RUN wget https://s3-us-west-2.amazonaws.com/twitch-creative-assets/ffmpeg-3.3.1-64bit-static.tar.xz
RUN tar xvJf ffmpeg-3.3.1-64bit-static.tar.xz
RUN ln -s /ffmpeg-3.3.1-64bit-static/ffmpeg /usr/local/bin/ffmpeg
RUN ln -s /ffmpeg-3.3.1-64bit-static/ffprobe /usr/local/bin/ffprobe

RUN wget https://bootstrap.pypa.io/ez_setup.py -O - | python
RUN git clone https://github.com/jnorton001/pycaption-cli.git; cd pycaption-cli; python setup.py install; cd ..; rm -rf pycaption-cli

RUN wget https://github.com/alco/goon/releases/download/v1.1.1/goon_linux_amd64.tar.gz
RUN tar xvzf goon_linux_amd64.tar.gz
RUN mv goon /bin/goon

RUN mkdir /app
WORKDIR /app
RUN echo ${ENVIRONMENT:-prod}
ADD mix.* ./
ADD config/ config/
RUN MIX_ENV=${ENVIRONMENT:-prod} mix local.rebar
RUN MIX_ENV=${ENVIRONMENT:-prod} mix local.hex --force
RUN MIX_ENV=${ENVIRONMENT:-prod} mix deps.get
RUN MIX_ENV=${ENVIRONMENT:-prod} mix deps.compile
RUN MIX_ENV=test mix deps.get
RUN MIX_ENV=test mix deps.compile

RUN mkdir /app/libcaption
WORKDIR /app/libcaption
ADD libcaption/ ./
RUN cmake . -DENABLE_RE2C=OFF && make && make install

WORKDIR /app
ADD assets/package.json assets/package.json
ADD assets/brunch-config.js assets/brunch-config.js
RUN ulimit -n 10000
RUN npm install
RUN npm install -g brunch

ADD . .
RUN ./compile_for_all_targets.sh
RUN cd assets && brunch build
RUN MIX_ENV=${ENVIRONMENT:-prod} mix phoenix.digest

EXPOSE 80 4369 9001
CMD ./run.sh
