FROM crystallang/crystal:latest-alpine as micrate-deps WORKDIR /app COPY ./micrate/shard.yml ./micrate/shard.lock ./ RUN shards install --production FROM crystallang/crystal:latest-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:latest-alpine as deps WORKDIR /app RUN apk add curl --no-cache COPY ./shard.yml ./shard.lock ./ RUN shards install FROM crystallang/crystal:latest-alpine as builder ARG BUILD_ENV WORKDIR /app COPY --from=deps /app/shard.yml /app/shard.lock ./ COPY --from=deps /app/lib ./lib COPY ./src ./src 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 ./db ./db EXPOSE 8080 CMD [ "/mw" ]