mentorenwahl/docker/backend/Dockerfile
2022-01-08 13:29:22 +01:00

45 lines
1.2 KiB
Docker

FROM python:alpine3.15 as pgsanity
WORKDIR /app
RUN apk add libecpg-dev --no-cache
RUN pip3 install pgsanity
COPY ./db ./db
RUN find -name "*.sql" | xargs pgsanity
FROM crystallang/crystal:1.2.2-alpine as micrate-deps
WORKDIR /app
COPY ./micrate/shard.yml ./micrate/shard.lock ./
RUN shards install --production
FROM crystallang/crystal:1.2.2-alpine as micrate-builder
ARG BUILD_ENV
WORKDIR /app
COPY --from=micrate-deps /app/shard.yml /app/shard.lock ./
COPY --from=micrate-deps /app/lib lib/
COPY ./micrate/src ./src
COPY ./scripts ./scripts
RUN . ./scripts/build.sh ${BUILD_ENV}
FROM crystallang/crystal:1.2.2-alpine as deps
WORKDIR /app
RUN apk add curl --no-cache
COPY ./shard.yml ./shard.lock ./
RUN shards install
FROM crystallang/crystal:1.2.2-alpine as builder
ARG BUILD_ENV
WORKDIR /app
COPY --from=deps /app/shard.yml /app/shard.lock ./
COPY --from=deps /app/lib ./lib
COPY --from=deps /app/bin ./bin
COPY ./src ./src
RUN if [ ${BUILD_ENV} = "development" ]; then ./bin/ameba ./src; fi
COPY ./scripts ./scripts
RUN . ./scripts/build.sh ${BUILD_ENV}
FROM scratch as runner
COPY --from=micrate-builder /app/bin/micrate .
COPY --from=builder /app/bin/mw .
COPY --from=pgsanity /app/db ./db
EXPOSE 8080
CMD [ "/mw" ]