Some checks are pending
Backend CI / test (push) Waiting to run
Backend CI / build (push) Blocked by required conditions
Deploy Mnemo Cards / Deploy Backend (push) Waiting to run
Deploy Mnemo Cards / Deploy Web App (push) Blocked by required conditions
Deploy Mnemo Cards / Final Verification (push) Blocked by required conditions
60 lines
1.9 KiB
Docker
60 lines
1.9 KiB
Docker
# syntax=docker/dockerfile:1.7
|
|
|
|
# --- Build stage ------------------------------------------------------------
|
|
# Note: This Dockerfile should be built from the parent directory:
|
|
# docker build -f mnemo_cards_backend/Dockerfile -t mnemo_cards_backend .
|
|
|
|
FROM dart:stable-sdk AS build
|
|
WORKDIR /app
|
|
|
|
# Copy all sources at once (simpler and more efficient)
|
|
COPY mnemo_cards_common /app/mnemo_cards_common
|
|
COPY mnemo_cards_common_backend /app/mnemo_cards_common_backend
|
|
COPY mnemo_cards_backend /app/mnemo_cards_backend
|
|
|
|
# Get dependencies (path dependencies will resolve correctly)
|
|
WORKDIR /app/mnemo_cards_common
|
|
RUN dart pub get
|
|
|
|
WORKDIR /app/mnemo_cards_common_backend
|
|
RUN dart pub get
|
|
|
|
WORKDIR /app/mnemo_cards_backend
|
|
RUN dart pub get
|
|
|
|
# Compile to native executable
|
|
RUN dart compile exe lib/main.dart -o /app/server
|
|
|
|
# --- Runtime stage ----------------------------------------------------------
|
|
FROM debian:bookworm-slim AS runtime
|
|
WORKDIR /app
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends ca-certificates openssl curl \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# App binary
|
|
COPY --from=build /app/server /app/server
|
|
|
|
# Static/assets needed at runtime
|
|
COPY --from=build /app/mnemo_cards_backend/public /app/public
|
|
COPY --from=build /app/mnemo_cards_backend/data /app/data
|
|
|
|
# Writable dirs for isar/backups by default
|
|
RUN mkdir -p /app/isar /app/backups && \
|
|
chmod -R 755 /app/isar /app/backups
|
|
|
|
ENV PORT=3000 \
|
|
ADDRESS=0.0.0.0 \
|
|
ISAR_DIR=/app/isar \
|
|
BACKUP_DIR=/app/backups \
|
|
APP_WORKDIR=/app
|
|
|
|
EXPOSE 3000
|
|
|
|
# Healthcheck - uses PORT env variable
|
|
HEALTHCHECK --interval=15s --timeout=5s --start-period=10s --retries=5 \
|
|
CMD curl -sf http://127.0.0.1:3000/api/v2/packs || exit 1
|
|
|
|
# Start server on PORT (default 3000, can be overridden by Coolify)
|
|
CMD sh -c "/app/server -a ${ADDRESS:-0.0.0.0} -p ${PORT:-3000} --isar ${ISAR_DIR:-/app/isar} --backup ${BACKUP_DIR:-/app/backups} --workdir ${APP_WORKDIR:-/app}"
|