Gabriel Vidal-Ayrinhac commited on
Commit
a04c70d
·
1 Parent(s): 7d6d833
Dockerfile CHANGED
@@ -1,15 +1,18 @@
1
  ARG MISTRAL_API_KEY
2
  ARG ELEVENLABS_API_KEY
3
- ARG API_URL=https://mistral-ai-game-jam-team15.hf.space/api
 
4
  ARG API_BASE_PATH=/app
5
 
6
  # Use Python base image as the primary environment
7
  FROM python:3.10-alpine AS final
8
 
9
- RUN apk add --no-cache supervisor
10
 
11
  RUN adduser -D -u 1000 user
12
- USER user
 
 
13
  ENV HOME=/home/user \
14
  PATH=/home/user/.local/bin:$PATH
15
 
@@ -23,12 +26,13 @@ RUN pip install --no-cache-dir -r requirements.txt
23
  COPY --chown=user ./src /app
24
  COPY --chown=user ./WebGLBuild /unity
25
 
26
- COPY --chown=user nginx.conf /etc/nginx/nginx.conf
 
27
 
28
  # Expose the port
29
  EXPOSE 8080
30
 
31
- # Copy --chown=user supervisord config to manage both processes (Nginx & Uvicorn/Flask/etc.)
32
  COPY --chown=user supervisord.conf /etc/supervisord.conf
33
 
34
  # Start both services using supervisord
 
1
  ARG MISTRAL_API_KEY
2
  ARG ELEVENLABS_API_KEY
3
+ ARG CUSTOM_API_URL=https://mistral-ai-game-jam-team15.hf.space/api
4
+ ARG HOST=mistral-ai-game-jam-team15.hf.space
5
  ARG API_BASE_PATH=/app
6
 
7
  # Use Python base image as the primary environment
8
  FROM python:3.10-alpine AS final
9
 
10
+ RUN apk add --no-cache supervisor nginx
11
 
12
  RUN adduser -D -u 1000 user
13
+ RUN mkdir -p /home/user/nginx /home/user/nginx/tmp
14
+ RUN chown -R user:user /home/user
15
+
16
  ENV HOME=/home/user \
17
  PATH=/home/user/.local/bin:$PATH
18
 
 
26
  COPY --chown=user ./src /app
27
  COPY --chown=user ./WebGLBuild /unity
28
 
29
+ COPY nginx.conf /etc/nginx/nginx.conf
30
+
31
 
32
  # Expose the port
33
  EXPOSE 8080
34
 
35
+ # Copy supervisord config to manage both processes (Nginx & Uvicorn/Flask/etc.)
36
  COPY --chown=user supervisord.conf /etc/supervisord.conf
37
 
38
  # Start both services using supervisord
Makefile CHANGED
@@ -1,17 +1,29 @@
 
 
 
 
1
  build:
2
  docker build -t team15:latest .
3
 
4
  run: # run source .env file for api keys
5
- docker run -p 8080:8080 -p 3000:3000 \
6
  -e MISTRAL_API_KEY=$(MISTRAL_API_KEY) \
7
  -e ELEVENLABS_API_KEY=$(ELEVENLABS_API_KEY) \
8
- -e API_URL=$(API_URL) \
 
 
 
 
 
 
 
 
 
9
  team15:latest
10
 
11
  dev:
12
  supervisord -c supervisord.dev.conf
13
 
14
-
15
  dev.api:
16
  fastapi dev src/hackathon/server/server.py --host 0.0.0.0 --port 3000
17
 
 
1
+ include .env
2
+ export $(shell sed 's/=.*//' .env)
3
+
4
+
5
  build:
6
  docker build -t team15:latest .
7
 
8
  run: # run source .env file for api keys
9
+ docker run -p 8080:8080 \
10
  -e MISTRAL_API_KEY=$(MISTRAL_API_KEY) \
11
  -e ELEVENLABS_API_KEY=$(ELEVENLABS_API_KEY) \
12
+ -e CUSTOM_API_URL=$(CUSTOM_API_URL) \
13
+ --user=1000:1000 \
14
+ team15:latest
15
+
16
+ run.dev:
17
+ docker run -p 8080:8080 \
18
+ -e MISTRAL_API_KEY=$(MISTRAL_API_KEY) \
19
+ -e ELEVENLABS_API_KEY=$(ELEVENLABS_API_KEY) \
20
+ -e CUSTOM_API_URL=localhost:8080/api \
21
+ --user=1000:1000 \
22
  team15:latest
23
 
24
  dev:
25
  supervisord -c supervisord.dev.conf
26
 
 
27
  dev.api:
28
  fastapi dev src/hackathon/server/server.py --host 0.0.0.0 --port 3000
29
 
WebGLBuild/Build/WebGLBuild.data CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:373d1d36d23b3822cee303c398adb63648c7046cb97889809ddeb2265a81fa41
3
- size 44337815
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:db596f4f5ad6d90c5ea09fb0dd35e17f63382652dba2b86048ed56ec2dcbab34
3
+ size 44342525
WebGLBuild/Build/WebGLBuild.wasm CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:2330eb36a4bccf4fd39c9fcc39eaad380f82d3d40f670f649974779788126aff
3
- size 36937974
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ad46145c8de73bab6159f047a8a0a17aac5b10f4e5d2d270aa56045ffe136755
3
+ size 36937944
nginx.conf CHANGED
@@ -1,26 +1,57 @@
1
- server {
2
- listen 8080;
3
 
4
- location / {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  root /unity;
6
  index index.html;
7
- try_files $uri $uri/ /index.html;
8
- }
9
 
10
- location /api/ {
11
- add_header Access-Control-Allow-Origin *;
12
- add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, DELETE, PUT, PATCH";
13
- add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization";
14
 
15
- # Handle OPTIONS requests (pre-flight)
16
- if ($request_method = 'OPTIONS') {
17
- return 204;
 
 
 
18
  }
19
 
20
- proxy_pass http://127.0.0.1:3000/;
21
- proxy_set_header Host $host;
22
- proxy_set_header X-Real-IP $remote_addr;
23
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
24
- proxy_set_header X-Forwarded-Proto $scheme;
25
  }
26
  }
 
 
 
1
 
2
+ worker_processes auto;
3
+
4
+ error_log /home/user/nginx/error.log warn;
5
+ pid /home/user/nginx/nginx.pid;
6
+
7
+ events {
8
+ worker_connections 1024;
9
+ }
10
+
11
+ http {
12
+ # Include the default mime types (includes .wasm, .js, etc.).
13
+ include /etc/nginx/mime.types;
14
+ default_type application/octet-stream;
15
+ client_body_temp_path /home/user/nginx/tmp/client_body;
16
+ proxy_temp_path /home/user/nginx/tmp/proxy;
17
+ fastcgi_temp_path /home/user/nginx/tmp/fastcgi;
18
+ uwsgi_temp_path /home/user/nginx/tmp/uwsgi;
19
+ scgi_temp_path /home/user/nginx/tmp/scgi;
20
+
21
+ access_log /home/user/nginx/access.log;
22
+
23
+ # Hide nginx version
24
+ server_tokens off;
25
+
26
+ sendfile on;
27
+ keepalive_timeout 65;
28
+
29
+ # The main server block
30
+ server {
31
+ listen 8080 default_server;
32
+ server_name _;
33
+
34
+ # Serve the Unity WebGL build from /unity at the container root
35
  root /unity;
36
  index index.html;
 
 
37
 
38
+ # Proxy /api/* to FastAPI running on localhost:3000
39
+ location /api/ {
40
+ proxy_pass http://127.0.0.1:3000/;
41
+ proxy_http_version 1.1;
42
 
43
+ # For WebSocket/streaming support (if your FastAPI endpoints use it)
44
+ proxy_set_header Upgrade $http_upgrade;
45
+ proxy_set_header Connection "upgrade";
46
+
47
+ # Forward original Host header, useful for logs or domain-specific logic
48
+ proxy_set_header Host $host;
49
  }
50
 
51
+ # All other files are served from the Unity build
52
+ # If file is not found, try returning index.html (useful for single-page apps)
53
+ location / {
54
+ try_files $uri $uri/ /index.html;
55
+ }
56
  }
57
  }
supervisord.conf CHANGED
@@ -5,8 +5,7 @@ logfile_maxbytes=0
5
  pidfile=/tmp/supervisord.pid
6
 
7
  [program:nginx]
8
- command=python3 -m http.server 8080
9
- directory=/unity
10
  autostart=true
11
  autorestart=true
12
  stdout_logfile=/dev/stdout
 
5
  pidfile=/tmp/supervisord.pid
6
 
7
  [program:nginx]
8
+ command=/usr/sbin/nginx -g 'daemon off;'
 
9
  autostart=true
10
  autorestart=true
11
  stdout_logfile=/dev/stdout