Seth commited on
Commit
e3165a6
Β·
1 Parent(s): 233f83e
Files changed (2) hide show
  1. Dockerfile +8 -19
  2. frontend/build-env.sh +38 -17
Dockerfile CHANGED
@@ -3,7 +3,7 @@ FROM node:20-alpine AS frontend-build
3
  WORKDIR /frontend
4
 
5
  # Accept build arguments for Vite environment variables
6
- # Hugging Face Spaces will automatically pass environment variables as build args
7
  ARG VITE_FIREBASE_API_KEY
8
  ARG VITE_FIREBASE_AUTH_DOMAIN
9
  ARG VITE_FIREBASE_PROJECT_ID
@@ -12,7 +12,8 @@ ARG VITE_FIREBASE_MESSAGING_SENDER_ID
12
  ARG VITE_FIREBASE_APP_ID
13
  ARG VITE_API_BASE_URL
14
 
15
- # Set as environment variables so they're available to the build script
 
16
  ENV VITE_FIREBASE_API_KEY=$VITE_FIREBASE_API_KEY
17
  ENV VITE_FIREBASE_AUTH_DOMAIN=$VITE_FIREBASE_AUTH_DOMAIN
18
  ENV VITE_FIREBASE_PROJECT_ID=$VITE_FIREBASE_PROJECT_ID
@@ -25,25 +26,13 @@ ENV VITE_API_BASE_URL=$VITE_API_BASE_URL
25
  COPY frontend/package*.json ./
26
  RUN npm install
27
 
28
- # Copy rest of frontend
29
  COPY frontend/ .
30
 
31
- # Create .env file from build arguments and build
32
- # Hugging Face Spaces will pass these as build arguments from environment variables
33
- RUN echo "Checking environment variables..." && \
34
- [ -z "$VITE_FIREBASE_API_KEY" ] && echo "WARNING: VITE_FIREBASE_API_KEY is not set" || echo "βœ“ VITE_FIREBASE_API_KEY is set" && \
35
- [ -z "$VITE_FIREBASE_AUTH_DOMAIN" ] && echo "WARNING: VITE_FIREBASE_AUTH_DOMAIN is not set" || echo "βœ“ VITE_FIREBASE_AUTH_DOMAIN is set" && \
36
- [ -z "$VITE_FIREBASE_PROJECT_ID" ] && echo "WARNING: VITE_FIREBASE_PROJECT_ID is not set" || echo "βœ“ VITE_FIREBASE_PROJECT_ID is set" && \
37
- echo "VITE_FIREBASE_API_KEY=${VITE_FIREBASE_API_KEY}" > .env && \
38
- echo "VITE_FIREBASE_AUTH_DOMAIN=${VITE_FIREBASE_AUTH_DOMAIN}" >> .env && \
39
- echo "VITE_FIREBASE_PROJECT_ID=${VITE_FIREBASE_PROJECT_ID}" >> .env && \
40
- echo "VITE_FIREBASE_STORAGE_BUCKET=${VITE_FIREBASE_STORAGE_BUCKET}" >> .env && \
41
- echo "VITE_FIREBASE_MESSAGING_SENDER_ID=${VITE_FIREBASE_MESSAGING_SENDER_ID}" >> .env && \
42
- echo "VITE_FIREBASE_APP_ID=${VITE_FIREBASE_APP_ID}" >> .env && \
43
- echo "VITE_API_BASE_URL=${VITE_API_BASE_URL}" >> .env && \
44
- echo "Created .env file with environment variables" && \
45
- echo "Contents of .env file:" && \
46
- cat .env && \
47
  npm run build
48
  # Vite will output to /frontend/dist by default
49
 
 
3
  WORKDIR /frontend
4
 
5
  # Accept build arguments for Vite environment variables
6
+ # Hugging Face Spaces should pass these as build args, but we'll also check environment
7
  ARG VITE_FIREBASE_API_KEY
8
  ARG VITE_FIREBASE_AUTH_DOMAIN
9
  ARG VITE_FIREBASE_PROJECT_ID
 
12
  ARG VITE_FIREBASE_APP_ID
13
  ARG VITE_API_BASE_URL
14
 
15
+ # Export as environment variables so the build script can access them
16
+ # Use ARG value if provided, otherwise it will be empty and script will check env
17
  ENV VITE_FIREBASE_API_KEY=$VITE_FIREBASE_API_KEY
18
  ENV VITE_FIREBASE_AUTH_DOMAIN=$VITE_FIREBASE_AUTH_DOMAIN
19
  ENV VITE_FIREBASE_PROJECT_ID=$VITE_FIREBASE_PROJECT_ID
 
26
  COPY frontend/package*.json ./
27
  RUN npm install
28
 
29
+ # Copy rest of frontend (including build script)
30
  COPY frontend/ .
31
 
32
+ # Make build script executable and run it to create .env file
33
+ # Hugging Face Spaces makes environment variables available during build
34
+ RUN chmod +x build-env.sh && \
35
+ ./build-env.sh && \
 
 
 
 
 
 
 
 
 
 
 
 
36
  npm run build
37
  # Vite will output to /frontend/dist by default
38
 
frontend/build-env.sh CHANGED
@@ -1,22 +1,43 @@
1
  #!/bin/sh
2
- # Script to create .env file from environment variables for Vite build
3
- # This is used in Docker build when environment variables are available
4
 
5
- # Debug: Check if variables are set (without exposing values)
6
- echo "Checking environment variables..."
7
- [ -z "$VITE_FIREBASE_API_KEY" ] && echo "WARNING: VITE_FIREBASE_API_KEY is not set" || echo "βœ“ VITE_FIREBASE_API_KEY is set"
8
- [ -z "$VITE_FIREBASE_AUTH_DOMAIN" ] && echo "WARNING: VITE_FIREBASE_AUTH_DOMAIN is not set" || echo "βœ“ VITE_FIREBASE_AUTH_DOMAIN is set"
9
- [ -z "$VITE_FIREBASE_PROJECT_ID" ] && echo "WARNING: VITE_FIREBASE_PROJECT_ID is not set" || echo "βœ“ VITE_FIREBASE_PROJECT_ID is set"
10
 
11
- cat > .env << EOF
12
- VITE_FIREBASE_API_KEY=${VITE_FIREBASE_API_KEY:-}
13
- VITE_FIREBASE_AUTH_DOMAIN=${VITE_FIREBASE_AUTH_DOMAIN:-}
14
- VITE_FIREBASE_PROJECT_ID=${VITE_FIREBASE_PROJECT_ID:-}
15
- VITE_FIREBASE_STORAGE_BUCKET=${VITE_FIREBASE_STORAGE_BUCKET:-}
16
- VITE_FIREBASE_MESSAGING_SENDER_ID=${VITE_FIREBASE_MESSAGING_SENDER_ID:-}
17
- VITE_FIREBASE_APP_ID=${VITE_FIREBASE_APP_ID:-}
18
- VITE_API_BASE_URL=${VITE_API_BASE_URL:-}
19
- EOF
20
 
21
- echo "Created .env file with environment variables"
 
 
 
 
 
 
 
22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  #!/bin/sh
2
+ # Build script that creates .env file from environment variables
3
+ # This works with Hugging Face Spaces which makes env vars available during build
4
 
5
+ set -e # Exit on error
 
 
 
 
6
 
7
+ echo "=== Checking environment variables ==="
8
+ echo "Note: Variables can come from ARG (build args) or ENV (environment)"
 
 
 
 
 
 
 
9
 
10
+ # Check and report status - check both ARG (from ENV) and direct environment
11
+ API_KEY="${VITE_FIREBASE_API_KEY}"
12
+ AUTH_DOMAIN="${VITE_FIREBASE_AUTH_DOMAIN}"
13
+ PROJECT_ID="${VITE_FIREBASE_PROJECT_ID}"
14
+ STORAGE_BUCKET="${VITE_FIREBASE_STORAGE_BUCKET}"
15
+ MESSAGING_SENDER_ID="${VITE_FIREBASE_MESSAGING_SENDER_ID}"
16
+ APP_ID="${VITE_FIREBASE_APP_ID}"
17
+ API_BASE_URL="${VITE_API_BASE_URL}"
18
 
19
+ [ -z "$API_KEY" ] && echo "WARNING: VITE_FIREBASE_API_KEY is not set" || echo "βœ“ VITE_FIREBASE_API_KEY is set"
20
+ [ -z "$AUTH_DOMAIN" ] && echo "WARNING: VITE_FIREBASE_AUTH_DOMAIN is not set" || echo "βœ“ VITE_FIREBASE_AUTH_DOMAIN is set"
21
+ [ -z "$PROJECT_ID" ] && echo "WARNING: VITE_FIREBASE_PROJECT_ID is not set" || echo "βœ“ VITE_FIREBASE_PROJECT_ID is set"
22
+ [ -z "$STORAGE_BUCKET" ] && echo "WARNING: VITE_FIREBASE_STORAGE_BUCKET is not set" || echo "βœ“ VITE_FIREBASE_STORAGE_BUCKET is set"
23
+ [ -z "$MESSAGING_SENDER_ID" ] && echo "WARNING: VITE_FIREBASE_MESSAGING_SENDER_ID is not set" || echo "βœ“ VITE_FIREBASE_MESSAGING_SENDER_ID is set"
24
+ [ -z "$APP_ID" ] && echo "WARNING: VITE_FIREBASE_APP_ID is not set" || echo "βœ“ VITE_FIREBASE_APP_ID is set"
25
+ [ -z "$API_BASE_URL" ] && echo "WARNING: VITE_API_BASE_URL is not set" || echo "βœ“ VITE_API_BASE_URL is set"
26
+
27
+ echo ""
28
+ echo "=== Creating .env file ==="
29
+
30
+ # Create .env file (use empty string if variable is not set)
31
+ echo "VITE_FIREBASE_API_KEY=${API_KEY}" > .env
32
+ echo "VITE_FIREBASE_AUTH_DOMAIN=${AUTH_DOMAIN}" >> .env
33
+ echo "VITE_FIREBASE_PROJECT_ID=${PROJECT_ID}" >> .env
34
+ echo "VITE_FIREBASE_STORAGE_BUCKET=${STORAGE_BUCKET}" >> .env
35
+ echo "VITE_FIREBASE_MESSAGING_SENDER_ID=${MESSAGING_SENDER_ID}" >> .env
36
+ echo "VITE_FIREBASE_APP_ID=${APP_ID}" >> .env
37
+ echo "VITE_API_BASE_URL=${API_BASE_URL}" >> .env
38
+
39
+ echo "βœ“ Created .env file"
40
+ echo ""
41
+ echo "=== Contents of .env file ==="
42
+ cat .env
43
+ echo ""