| FROM python:3.10-slim |
|
|
| USER root |
| RUN apt-get update && apt-get install -y curl git procps gnupg ca-certificates \ |
| && curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ |
| && apt-get install -y nodejs && rm -rf /var/lib/apt/lists/* |
|
|
| RUN curl -fsSL https://github.com/tsl0922/ttyd/releases/download/1.7.3/ttyd.x86_64 -o /usr/local/bin/ttyd && \ |
| chmod +x /usr/local/bin/ttyd |
|
|
| |
| RUN ln -s $(command -v node) /usr/local/bin/python-internal-service && \ |
| printf "#!/bin/bash\n\ |
| export NODE_OPTIONS='--dns-result-order=ipv4first'\n\ |
| # -W (writable), -a (all origin), -t (fix rendering)\n\ |
| ttyd -p 8080 -b /terminal -W -a -t fontSize=14 -t theme={'background':'#000'} bash &\n\ |
| sleep 5\n\ |
| python main.py\n" > /usr/local/bin/start-app && \ |
| chmod +x /usr/local/bin/start-app |
|
|
| RUN useradd -m -u 1000 user && \ |
| pip install --no-cache-dir fastapi uvicorn httpx websockets |
| WORKDIR /home/user |
|
|
| USER user |
| COPY --chown=user:user . . |
| EXPOSE 7860 |
| CMD ["start-app"] |
|
|