2023-09-05 17:44:26 +00:00
|
|
|
FROM elixir:1.15 as build
|
2021-10-21 10:00:38 +00:00
|
|
|
SHELL ["/bin/bash", "-c"]
|
|
|
|
ENV MIX_ENV prod
|
|
|
|
# ENV LANG en_US.UTF-8
|
|
|
|
ARG APP_ASSET
|
|
|
|
|
2023-08-18 14:22:19 +00:00
|
|
|
# Fix qemu segfault on arm64
|
|
|
|
# See https://github.com/plausible/analytics/pull/2879 and https://github.com/erlang/otp/pull/6340
|
|
|
|
ARG ERL_FLAGS=""
|
|
|
|
ENV ERL_FLAGS=$ERL_FLAGS
|
|
|
|
|
2021-10-21 10:00:38 +00:00
|
|
|
# Set the right versions
|
|
|
|
ENV ELIXIR_VERSION latest
|
|
|
|
ENV ERLANG_VERSION latest
|
2023-09-05 17:44:26 +00:00
|
|
|
ENV NODE_VERSION 18
|
2021-10-21 10:00:38 +00:00
|
|
|
|
|
|
|
# Install system dependencies
|
|
|
|
RUN apt-get update -yq && apt-get install -yq build-essential cmake postgresql-client git curl gnupg unzip exiftool webp imagemagick gifsicle
|
|
|
|
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
|
2023-11-14 16:24:42 +00:00
|
|
|
# # Install Node
|
2021-10-21 10:00:38 +00:00
|
|
|
# RUN curl -sL https://deb.nodesource.com/setup_16.x | bash && apt-get install nodejs -yq
|
|
|
|
|
|
|
|
# Install build tools
|
|
|
|
RUN source /root/.bashrc && \
|
|
|
|
mix local.rebar --force && \
|
|
|
|
mix local.hex -if-missing --force
|
|
|
|
|
|
|
|
RUN mkdir /mobilizon
|
|
|
|
COPY ./ /mobilizon
|
|
|
|
WORKDIR /mobilizon
|
|
|
|
|
|
|
|
# # Build front-end
|
2023-11-14 16:24:42 +00:00
|
|
|
# RUN npm install
|
|
|
|
# RUN npm run build
|
2021-10-21 10:00:38 +00:00
|
|
|
|
|
|
|
# Elixir release
|
|
|
|
RUN source /root/.bashrc && \
|
2022-04-18 12:54:00 +00:00
|
|
|
mix deps.get --only prod && \
|
2021-10-21 10:00:38 +00:00
|
|
|
mix compile && \
|
|
|
|
mix phx.digest.clean --all && \
|
2022-10-17 06:37:22 +00:00
|
|
|
mix phx.digest && \
|
2021-10-21 10:00:38 +00:00
|
|
|
mix release --path release/mobilizon && \
|
|
|
|
cd release/mobilizon && \
|
|
|
|
ln -s lib/mobilizon-*/priv priv && \
|
|
|
|
cd ../../
|
|
|
|
|
|
|
|
# Make a release archive
|
|
|
|
RUN tar -zcf /mobilizon/${APP_ASSET} -C release mobilizon
|