update configuration docker setup for data platform
This commit is contained in:
46
06-analytics/Dockerfile.nginx
Normal file
46
06-analytics/Dockerfile.nginx
Normal 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
|
||||
61
06-analytics/nginx-superset.conf
Normal file
61
06-analytics/nginx-superset.conf
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user