# inspired from https://framagit.org/Windyo/mobilizon/-/blob/a1e0b9730e9c63de6058c3f5d803b2743efafed4/docker/app/Dockerfile

# **** Temporary docker image ****
# elixir version MUST match
FROM elixir:1.10.4 as builder
ARG MOBILIZON_GIT_URL
ARG MOBILIZON_GIT_TAG
ARG NODE_V
ENV MIX_ENV prod
ENV INSTANCE_CONFIG prod
RUN apt-get update -y \
	&& apt-get install -y apt-utils \
	&& curl -sL https://deb.nodesource.com/setup_"$NODE_V".x | bash - \
	&& apt-get install -y nodejs build-essential inotify-tools postgresql-client git curl gnupg xvfb libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 python3-pip cmake \
	&& apt-get clean \
	&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
	&& npm install -g yarn wait-on
RUN useradd -ms /bin/bash -p ! mobilizon
USER mobilizon
WORKDIR /home/mobilizon
COPY ./prod.secret.exs /home/mobilizon/build/config/
RUN git clone -b "$MOBILIZON_GIT_TAG" "$MOBILIZON_GIT_URL" ./build
WORKDIR /home/mobilizon/build
RUN mix local.hex --force \
	&& mix local.rebar --force
RUN mix deps.get
RUN mix deps.compile
RUN mix compile
WORKDIR /home/mobilizon/build/js
RUN yarn install \
	&& yarn run build
WORKDIR /home/mobilizon/build
RUN rm -rf ./.dockerignore ./.gitignore ./.gitlab-ci.yml ./CHANGELOG.md ./CONTRIBUTING.md ./docker ./docker-compose.test.yml ./docker-compose.yml ./Dockerfile ./docs ./js ./Makefile ./README.md ./SECURITY.md ./setup_db.psql ./support \
        && curl https://dbip.mirror.framasoft.org/files/dbip-city-lite-latest.mmdb --output GeoLite2-City.mmdb -s \
        && mv GeoLite2-City.mmdb /home/mobilizon/build/priv/data/GeoLite2-City.mmdb

# Final docker image
FROM elixir:1.10.4-alpine
ENV INIT=FALSE \
	ADMIN_EMAIL=test@test.com \
	ADMIN_PASSWORD=passwd \
	MIX_ENV=prod \
	INSTANCE_CONFIG=prod
RUN addgroup -S mobilizongr && adduser -s /bin/bash -S mobilizon -G mobilizongr
RUN apk update && apk add --update git && rm-rf /tmp/* /var/tmp/*
COPY --from=builder /home/mobilizon/build/ /home/mobilizon/live/
COPY --from=builder /home/mobilizon/.mix/ /home/mobilizon/.mix/
COPY ./entrypoint.sh /home/mobilizon/entrypoint.sh
RUN chmod +x /home/mobilizon/entrypoint.sh
WORKDIR /home/mobilizon/live
USER mobilizon
ENTRYPOINT [ "/home/mobilizon/entrypoint.sh" ]