| FROM dart:stable | |
| # We install unzip and remove the apt-index again to keep the | |
| # docker image diff small. | |
| RUN apt-get update && \ | |
| apt-get install -y unzip && \ | |
| rm -rf /var/lib/apt/lists/* | |
| WORKDIR /app | |
| RUN groupadd --system dart && \ | |
| useradd --no-log-init --system --home /home/dart --create-home -g dart dart | |
| RUN chown dart:dart /app | |
| # Work around https://github.com/dart-lang/sdk/issues/47093 | |
| RUN find /usr/lib/dart -type d -exec chmod 755 {} \; | |
| # Switch to a new, non-root user to use the flutter tool. | |
| # The Flutter tool won't perform its actions when run as root. | |
| USER dart | |
| COPY --chown=dart:dart tool/dart_cloud_run.sh /dart_runtime/ | |
| RUN chmod a+x /dart_runtime/dart_cloud_run.sh | |
| COPY --chown=dart:dart pubspec.* /app/ | |
| RUN dart pub get | |
| COPY --chown=dart:dart . /app | |
| RUN dart pub get --offline | |
| ENV PATH="/home/dart/.pub-cache/bin:${PATH}" | |
| ENV FLUTTER_CHANNEL="dev" | |
| # Set the Flutter SDK up for web compilation. | |
| RUN dart pub run grinder setup-flutter-sdk | |
| # Build the dill file | |
| RUN dart pub run grinder build-storage-artifacts validate-storage-artifacts | |
| # Clear out any arguments the base images might have set and ensure we start | |
| # the Dart app using custom script enabling debug modes. | |
| CMD [] | |
| ENTRYPOINT ["/dart_runtime/dart_cloud_run.sh", "--port", "${PORT}", \ | |
| "--redis-url", "redis://10.0.0.4:6379", "--channel", "dev"] |