# Use latest stable channel SDK.
FROM dart:stable AS build

# Resolve app dependencies.
WORKDIR /app
COPY pubspec.* ./
RUN dart pub get

# Copy app source code (except anything in .dockerignore) and AOT compile app.
COPY . .
RUN APP_VERSION=$(awk '/^version:/{print $2}' pubspec.yaml) && \
    dart compile exe bin/server.dart -o bin/server \
    -DAPP_VERSION=$APP_VERSION

# Build minimal serving image from AOT-compiled `/server`
# and the pre-built AOT-runtime in the `/runtime/` directory of the base image.
FROM scratch
COPY --from=build /runtime/ /
COPY --from=build /app/bin/server /app/bin/
COPY assets /

# Start server.
EXPOSE 3000
CMD ["/app/bin/server"]
