63 lines
1.5 KiB
Docker
63 lines
1.5 KiB
Docker
|
FROM elixir:slim
|
||
|
|
||
|
# Install dependencies, NodeJS, YARN & clean apt
|
||
|
RUN apt update \
|
||
|
&& apt -y dist-upgrade \
|
||
|
&& apt -y install build-essential \
|
||
|
curl \
|
||
|
wget \
|
||
|
unzip \
|
||
|
vim \
|
||
|
openssl \
|
||
|
git \
|
||
|
cmake \
|
||
|
imagemagick \
|
||
|
webp \
|
||
|
gifsicle \
|
||
|
jpegoptim \
|
||
|
optipng \
|
||
|
pngquant \
|
||
|
postgresql-client \
|
||
|
&& curl -sL https://deb.nodesource.com/setup_12.x | bash - \
|
||
|
&& apt -y install nodejs \
|
||
|
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
|
||
|
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
|
||
|
&& apt -y update && apt -y install yarn \
|
||
|
&& apt -y clean \
|
||
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||
|
|
||
|
# Add mobilizon user
|
||
|
RUN groupadd -r mobilizon \
|
||
|
&& useradd -r -g mobilizon -m mobilizon
|
||
|
|
||
|
USER mobilizon
|
||
|
|
||
|
# ENV
|
||
|
ENV MIX_ENV=prod
|
||
|
|
||
|
# PORT
|
||
|
EXPOSE 4000
|
||
|
|
||
|
# Copy repo
|
||
|
COPY . /app
|
||
|
WORKDIR /app
|
||
|
|
||
|
# Compile dependencies, Mobilizon and build front-end
|
||
|
RUN mix local.hex --force && mix local.rebar --force \
|
||
|
&& HEX_HTTP_CONCURRENCY=4 HEX_HTTP_TIMEOUT=60 mix do deps.get, compile \
|
||
|
&& cd js && NODE_BUILD_MEMORY=2024 yarn install && NODE_BUILD_MEMORY=2024 yarn run build \
|
||
|
# free space
|
||
|
&& rm -rf js doc deps docs support \
|
||
|
&& rm -rf /home/mobilizon/.cache/* \
|
||
|
# copy config secret env based file
|
||
|
&& cp docker/production/prod.secret config/ \
|
||
|
# set start script mod
|
||
|
&& chmod +x /app/docker/production/start.sh
|
||
|
|
||
|
CMD /app/docker/production/start.sh
|
||
|
|
||
|
## start.sh:
|
||
|
# !/bin/bash
|
||
|
# mix ecto.migrate
|
||
|
# mix phx.server
|