update configuration docker setup for data platform

This commit is contained in:
jigoong
2026-05-07 17:57:42 +07:00
parent ce949dcc8f
commit 1dba772e62
53 changed files with 6732 additions and 24 deletions

View File

@@ -0,0 +1,46 @@
FROM apache/superset:latest
USER root
ENV PATH="/app/.venv/bin:$PATH"
RUN python -m ensurepip --upgrade && /app/.venv/bin/python -m pip install --upgrade pip setuptools wheel
RUN /app/.venv/bin/pip install --no-cache-dir psycopg2-binary
# Install nginx and supervisor
RUN apt-get update && apt-get install -y --no-install-recommends nginx supervisor && rm -rf /var/lib/apt/lists/*
# Copy nginx config
COPY nginx-superset.conf /etc/nginx/sites-available/default
# Create supervisor config to run both nginx and gunicorn
RUN cat > /etc/supervisor/conf.d/supervisord.conf << 'EOF'
[supervisord]
nodaemon=true
user=root
[program:nginx]
command=nginx -g "daemon off;"
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[program:superset]
command=/app/.venv/bin/gunicorn --bind 127.0.0.1:8088 --workers 4 --timeout 120 --limit-request-line 0 --limit-request-field_size 0 "superset.app:create_app()"
directory=/app
autostart=true
autorestart=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
user=superset
EOF
EXPOSE 80
USER superset

View File

@@ -0,0 +1,61 @@
server {
listen 80;
server_name localhost;
# Handle API endpoints directly - no rewrite needed
location /superset/api/ {
proxy_pass http://superset:8088/api/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Accept-Encoding "";
proxy_read_timeout 300s;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
}
# Strip /superset/ prefix, proxy to Superset at root
location /superset/ {
proxy_pass http://superset:8088/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Accept-Encoding "";
proxy_read_timeout 300s;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
# Rewrite redirect Location headers to add /superset prefix
proxy_redirect ~^(https?://[^/]+)?/(.*)$ $1/superset/$2;
# Rewrite URLs in HTML responses
sub_filter_once off;
sub_filter_types text/html application/json;
sub_filter 'href="/' 'href="/superset/';
sub_filter 'src="/' 'src="/superset/';
sub_filter 'action="/' 'action="/superset/';
sub_filter '"/static/' '"/superset/static/';
sub_filter '"/api/' '"/superset/api/';
sub_filter '"/superset/superset/' '"/superset/superset/';
sub_filter '"/login/' '"/superset/login/';
sub_filter '"/logout/' '"/superset/logout/';
sub_filter '"/lang/' '"/superset/lang/';
}
location = /superset {
return 301 /superset/;
}
# Health check for Docker
location = /health {
proxy_pass http://superset:8088/health;
}
}