Spaces:
Paused
Paused
| # --- Stage 1: Runtime --- | |
| FROM alpine:latest | |
| # Install Nginx, Curl, Supervisor | |
| RUN apk add --no-cache nginx curl supervisor | |
| # --- Install Chisel --- | |
| RUN curl -L -o /tmp/chisel.gz https://github.com/jpillora/chisel/releases/download/v1.9.1/chisel_1.9.1_linux_amd64.gz \ | |
| && gzip -d /tmp/chisel.gz \ | |
| && mv /tmp/chisel /usr/bin/chisel \ | |
| && chmod +x /usr/bin/chisel | |
| # Create User | |
| RUN adduser -D -u 1000 appuser | |
| WORKDIR /home/appuser | |
| # --- CONFIGURATION --- | |
| # 1. Nginx Config | |
| RUN echo ' \ | |
| worker_processes auto; \ | |
| daemon off; \ | |
| pid /home/appuser/nginx.pid; \ | |
| error_log /dev/stderr info; \ | |
| \ | |
| events { \ | |
| worker_connections 1024; \ | |
| } \ | |
| \ | |
| http { \ | |
| access_log /dev/stdout; \ | |
| client_body_temp_path /home/appuser/client_body_temp; \ | |
| proxy_temp_path /home/appuser/proxy_temp; \ | |
| fastcgi_temp_path /home/appuser/fastcgi_temp; \ | |
| uwsgi_temp_path /home/appuser/uwsgi_temp; \ | |
| scgi_temp_path /home/appuser/scgi_temp; \ | |
| \ | |
| map $http_upgrade $connection_upgrade { \ | |
| default upgrade; \ | |
| "" close; \ | |
| } \ | |
| \ | |
| server { \ | |
| listen 7860 default_server; \ | |
| \ | |
| # The Tunnel Endpoint \ | |
| location /_tunnel { \ | |
| proxy_pass http://127.0.0.1:7777/; \ | |
| proxy_http_version 1.1; \ | |
| proxy_set_header Upgrade $http_upgrade; \ | |
| proxy_set_header Connection $connection_upgrade; \ | |
| proxy_read_timeout 86400; \ | |
| } \ | |
| \ | |
| # The Public View \ | |
| location / { \ | |
| proxy_pass http://127.0.0.1:8080; \ | |
| proxy_set_header Host $host; \ | |
| proxy_set_header X-Real-IP $remote_addr; \ | |
| } \ | |
| } \ | |
| } ' > /home/appuser/nginx.conf | |
| # 2. Start Script | |
| RUN echo "#!/bin/sh" > start.sh && \ | |
| echo "echo '--- Starting Chisel Server ---'" >> start.sh && \ | |
| echo "chisel server --port 7777 --reverse &" >> start.sh && \ | |
| echo "echo '--- Starting Nginx ---'" >> start.sh && \ | |
| echo "nginx -c /home/appuser/nginx.conf &" >> start.sh && \ | |
| echo "echo '--- Running. Waiting for client connection... ---'" >> start.sh && \ | |
| echo "tail -f /dev/null" >> start.sh && \ | |
| chmod +x start.sh | |
| # 3. Permissions (The Fix for the log warning) | |
| # We create the log directory and give ownership to appuser | |
| RUN mkdir -p /var/lib/nginx/logs \ | |
| && touch /var/lib/nginx/logs/error.log \ | |
| && chown -R appuser:appuser /var/lib/nginx \ | |
| && mkdir -p /home/appuser/client_body_temp \ | |
| /home/appuser/proxy_temp \ | |
| /home/appuser/fastcgi_temp \ | |
| /home/appuser/uwsgi_temp \ | |
| /home/appuser/scgi_temp \ | |
| && chown -R appuser:appuser /home/appuser \ | |
| && chmod -R 777 /home/appuser | |
| # Switch User | |
| USER appuser | |
| EXPOSE 7860 | |
| CMD ["./start.sh"] |