|
1 | 1 | FROM dart:stable AS build |
2 | 2 |
|
| 3 | +# Set the dependency versions |
| 4 | +ARG FLY_VERSION=0.3.98 |
| 5 | +ARG YQ_VERSION=4.45.1 |
| 6 | + |
| 7 | +# Download and install flyctl based on architecture |
| 8 | +RUN arch=$(uname -m) && \ |
| 9 | + if [ "$arch" = "x86_64" ]; then \ |
| 10 | + curl -L "https://github.com/superfly/flyctl/releases/download/v${FLY_VERSION}/flyctl_${FLY_VERSION}_Linux_x86_64.tar.gz" -o flyctl.tar.gz; \ |
| 11 | + curl -L "https://github.com/mikefarah/yq/releases/download/v${YQ_VERSION}/yq_linux_amd64" -o /usr/local/bin/yq; \ |
| 12 | + elif [ "$arch" = "aarch64" ]; then \ |
| 13 | + curl -L "https://github.com/superfly/flyctl/releases/download/v${FLY_VERSION}/flyctl_${FLY_VERSION}_Linux_arm64.tar.gz" -o flyctl.tar.gz; \ |
| 14 | + curl -L "https://github.com/mikefarah/yq/releases/download/v${YQ_VERSION}/yq_linux_arm64" -o /usr/local/bin/yq; \ |
| 15 | + else \ |
| 16 | + echo "Unsupported architecture: $arch" && exit 1; \ |
| 17 | + fi && \ |
| 18 | + mkdir -p /tmp/flyctl && \ |
| 19 | + tar -xzf flyctl.tar.gz -C /tmp/flyctl && \ |
| 20 | + mv /tmp/flyctl/flyctl /usr/local/bin/ && \ |
| 21 | + chmod +x /usr/local/bin/flyctl && \ |
| 22 | + chmod +x /usr/local/bin/yq && \ |
| 23 | + rm -rf flyctl.tar.gz /tmp/flyctl |
| 24 | + |
| 25 | +# Install sqlite3 |
3 | 26 | WORKDIR /app |
4 | | -COPY pubspec.* ./ |
| 27 | +RUN apt update && apt install -y libsqlite3-0 |
| 28 | +RUN cp $(find / -name libsqlite3.so* -type f | head -n1) /app/libsqlite3.so |
| 29 | + |
| 30 | +# Fix pub cache |
| 31 | +WORKDIR /app |
| 32 | +COPY tool tool |
| 33 | +WORKDIR /app/tool |
5 | 34 | RUN dart pub get |
| 35 | +RUN dart run fix_pub_cache.dart |
6 | 36 |
|
7 | | -COPY . . |
8 | | -RUN dart compile exe bin/cloud_hub.dart -o bin/cloud_hub |
| 37 | +# Copy repo |
| 38 | +WORKDIR /app |
| 39 | +COPY pubspec.* ./ |
| 40 | +COPY apps/cli apps/cli |
| 41 | +COPY packages packages |
| 42 | +COPY services services |
| 43 | + |
| 44 | +WORKDIR /app/packages/celest_auth |
| 45 | +RUN yq eval 'del(.environment.flutter)' -i pubspec.yaml |
| 46 | +WORKDIR /app/packages/celest_core |
| 47 | +RUN yq eval 'del(.environment.flutter)' -i pubspec.yaml |
| 48 | +WORKDIR /app/packages/celest |
| 49 | +RUN yq eval 'del(.environment.flutter)' -i pubspec.yaml |
| 50 | + |
| 51 | +WORKDIR /app/services/celest_cloud_hub |
| 52 | +RUN dart pub get |
| 53 | +RUN dart compile exe bin/cloud_hub.dart -o /app/cloud_hub |
9 | 54 |
|
10 | 55 | FROM scratch |
11 | 56 | COPY --from=build /runtime/ / |
12 | | -COPY --from=build /app/bin/cloud_hub /app/bin/ |
| 57 | +COPY --from=build /app/cloud_hub /app/cloud_hub |
| 58 | +COPY --from=build /app/libsqlite3.so /app/libsqlite3.so |
| 59 | +COPY --from=build /usr/local/bin/flyctl /usr/local/bin/fly |
13 | 60 |
|
14 | 61 | ENV PORT=8080 |
15 | 62 | EXPOSE $PORT |
16 | 63 |
|
17 | | -CMD ["/app/bin/cloud_hub"] |
| 64 | +WORKDIR /tmp |
| 65 | +CMD ["/app/cloud_hub"] |
0 commit comments