Use multi-stage build with pentacent/keila image
This commit is contained in:
34
Dockerfile
34
Dockerfile
@ -1,32 +1,22 @@
|
|||||||
FROM cloudron/base:4.2.0
|
FROM cloudron/base:4.2.0
|
||||||
|
|
||||||
# Install dependencies
|
# Use Keila's prebuilt image as base for the release
|
||||||
RUN mkdir -p /app/code /app/data
|
FROM pentacent/keila:0.14 as keila-build
|
||||||
WORKDIR /app/code
|
|
||||||
|
|
||||||
# Install Erlang and Elixir from Ubuntu repos
|
FROM cloudron/base:4.2.0
|
||||||
|
|
||||||
|
# Install runtime dependencies
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y erlang elixir \
|
&& apt-get install -y postgresql-client \
|
||||||
&& apt-get install -y git build-essential cmake nodejs npm postgresql-client \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Set environment variables
|
# Create directories
|
||||||
ENV MIX_ENV=prod
|
RUN mkdir -p /app/code /app/data
|
||||||
|
|
||||||
# Clone and build Keila
|
# Copy Keila from build stage
|
||||||
RUN git clone --depth 1 --branch v0.14.7 https://github.com/pentacent/keila.git . \
|
COPY --from=keila-build /opt/app /tmp/keila-release
|
||||||
&& 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
|
# Copy configuration files
|
||||||
RUN cp -r _build/prod/rel/keila /tmp/keila-release
|
|
||||||
|
|
||||||
# Copy start script
|
|
||||||
COPY start.sh /app/code/start.sh
|
COPY start.sh /app/code/start.sh
|
||||||
COPY nginx.conf /etc/nginx/sites-available/default
|
COPY nginx.conf /etc/nginx/sites-available/default
|
||||||
|
|
||||||
@ -34,6 +24,8 @@ COPY nginx.conf /etc/nginx/sites-available/default
|
|||||||
RUN chmod +x /app/code/start.sh \
|
RUN chmod +x /app/code/start.sh \
|
||||||
&& chown -R cloudron:cloudron /app/code /app/data /tmp/keila-release
|
&& chown -R cloudron:cloudron /app/code /app/data /tmp/keila-release
|
||||||
|
|
||||||
|
WORKDIR /app/code
|
||||||
|
|
||||||
EXPOSE 4000
|
EXPOSE 4000
|
||||||
|
|
||||||
CMD ["/app/code/start.sh"]
|
CMD ["/app/code/start.sh"]
|
2
start.sh
2
start.sh
@ -65,4 +65,6 @@ sudo -u cloudron -E /app/data/keila/bin/keila eval "Keila.Release.migrate()"
|
|||||||
|
|
||||||
echo "==> Starting Keila application"
|
echo "==> Starting Keila application"
|
||||||
cd /app/data/keila
|
cd /app/data/keila
|
||||||
|
# Change the internal port since nginx listens on 4000
|
||||||
|
export PORT="4001"
|
||||||
exec sudo -u cloudron -E /app/data/keila/bin/keila start
|
exec sudo -u cloudron -E /app/data/keila/bin/keila start
|
Reference in New Issue
Block a user