43 lines
1.2 KiB
Docker
43 lines
1.2 KiB
Docker
FROM cloudron/base:4.2.0
|
|
|
|
# Install dependencies
|
|
RUN mkdir -p /app/code /app/data
|
|
WORKDIR /app/code
|
|
|
|
# Install Elixir and dependencies
|
|
RUN curl -fSL https://github.com/elixir-lang/elixir/releases/download/v1.15.7/elixir-otp-26.zip -o elixir.zip \
|
|
&& unzip elixir.zip -d /opt/elixir \
|
|
&& rm elixir.zip \
|
|
&& ln -s /opt/elixir/bin/* /usr/local/bin/ \
|
|
&& apt-get update \
|
|
&& apt-get install -y git build-essential cmake nodejs npm postgresql-client \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Set environment variables
|
|
ENV MIX_ENV=prod
|
|
ENV PATH="/opt/elixir/bin:$PATH"
|
|
|
|
# Clone and build Keila
|
|
RUN git clone --depth 1 --branch v0.14.7 https://github.com/pentacent/keila.git . \
|
|
&& mix local.hex --force \
|
|
&& mix local.rebar --force \
|
|
&& mix deps.get --only prod \
|
|
&& mix deps.compile \
|
|
&& cd assets && npm ci && npm run deploy && cd .. \
|
|
&& mix phx.digest \
|
|
&& mix release
|
|
|
|
# Copy initialization data
|
|
RUN cp -r _build/prod/rel/keila /tmp/keila-release
|
|
|
|
# Copy start script
|
|
COPY start.sh /app/code/start.sh
|
|
COPY nginx.conf /etc/nginx/sites-available/default
|
|
|
|
# Set permissions
|
|
RUN chmod +x /app/code/start.sh \
|
|
&& chown -R cloudron:cloudron /app/code /app/data /tmp/keila-release
|
|
|
|
EXPOSE 4000
|
|
|
|
CMD ["/app/code/start.sh"] |