diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c108b34 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM python:3.13-slim-bookworm AS build + +WORKDIR /santa +RUN mkdir -p /santa/WebServer/static +COPY setup-server.sh /santa/setup-server.sh +RUN apt-get update && apt-get install -y curl +RUN /santa/setup-server.sh --download-only +COPY requirements.txt /santa/requirements.txt +COPY src/setup.py /santa/src/setup.py +COPY src/SantaExchange/ /santa/src/SantaExchange/ +COPY WebServer/__init__.py WebServer/server.py /santa/WebServer/ +COPY WebServer/templates/ /santa/WebServer/templates/ +COPY WebServer/static/exchange_client.py WebServer/static/exchange_worker.js WebServer/static/style.css /santa/WebServer/static/ +RUN pip install -r /santa/requirements.txt +RUN /santa/setup-server.sh + +FROM python:3.13-slim-bookworm +RUN pip install flask flask-socketio gunicorn eventlet +COPY --from=build /santa/WebServer /WebServer + +WORKDIR /WebServer +EXPOSE 8000 +CMD ["gunicorn", "--worker-class", "eventlet", "-w", "4", "--bind", "0.0.0.0:8000", "server:app"] diff --git a/setup-server.sh b/setup-server.sh index 1f19837..37bf8d0 100755 --- a/setup-server.sh +++ b/setup-server.sh @@ -17,6 +17,10 @@ if ! test -f ./WebServer/static/socket.io.min.js; then fi echo "Socket.io is installed" +if [[ "$1" == "--download-only" ]]; then + exit 0 +fi + echo "Building wheel file of SantaExchange package" cd src/ python setup.py bdist_wheel