fix: Refactor devcontainer to use base Ubuntu with Docker-in-Docker

- Switch from docker-compose service to base Ubuntu container
- Add Docker-in-Docker to run docker-compose inside Codespace
- This provides git access and full dev environment
- Superset services run via docker-compose from within the container
This commit is contained in:
Maxime Beauchemin
2025-07-28 15:36:39 -07:00
parent 26e5e637f9
commit a007b3020d
4 changed files with 43 additions and 19 deletions

View File

@@ -1,6 +1,6 @@
# Superset GitHub Codespaces Development
This configuration uses `docker-compose-light.yml` for lightweight, multi-instance development in GitHub Codespaces.
This configuration provides a full development environment with Docker-in-Docker support, allowing you to run `docker-compose-light.yml` inside your Codespace for lightweight, multi-instance development.
## Quick Start

View File

@@ -1,14 +1,8 @@
{
"name": "Apache Superset Development",
"dockerComposeFile": [
"../docker-compose-light.yml"
],
"service": "superset-node-light",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
// Use the light config for faster startup and lower resource usage
"shutdownAction": "stopCompose",
// Forward ports for development
"forwardPorts": [9001, 8088],
"portsAttributes": {
@@ -64,22 +58,26 @@
"FLASK_ENV": "development",
"SUPERSET_ENV": "development",
"CYPRESS_CACHE_FOLDER": "/tmp/cypress_cache",
// Enable hot reloading
"FLASK_DEBUG": "1",
// For multiple instances, use different project names
"COMPOSE_PROJECT_NAME": "${localEnv:CODESPACE_NAME}"
"FLASK_DEBUG": "1"
},
// Run commands after container is created
"postCreateCommand": "chmod +x .devcontainer/start-superset.sh && echo '🚀 Superset Codespace ready! Run: .devcontainer/start-superset.sh to start'",
"postCreateCommand": "chmod +x .devcontainer/setup-dev.sh && .devcontainer/setup-dev.sh",
// Auto-start Superset on Codespace resume
"postStartCommand": ".devcontainer/start-superset.sh",
// Features to add to the dev container
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {},
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"moby": true,
"installDockerBuildx": true,
"dockerDashComposeVersion": "v2"
},
"ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/devcontainers/features/python:1": {
"version": "3.10"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "18"
},

25
.devcontainer/setup-dev.sh Executable file
View File

@@ -0,0 +1,25 @@
#!/bin/bash
# Setup script for Superset Codespaces development environment
set -e
echo "🔧 Setting up Superset development environment..."
# Install additional system dependencies
echo "📦 Installing system dependencies..."
sudo apt-get update
sudo apt-get install -y \
build-essential \
libssl-dev \
libffi-dev \
libsasl2-dev \
libldap2-dev \
libpq-dev \
python3-pip \
python3-venv
# Make the start script executable
chmod +x .devcontainer/start-superset.sh
echo "✅ Development environment setup complete!"
echo "🚀 Run '.devcontainer/start-superset.sh' to start Superset"

View File

@@ -4,7 +4,8 @@
set -e
echo "🚀 Starting Superset in Codespaces..."
echo "📦 Using project name: ${CODESPACE_NAME}"
PROJECT_NAME="${CODESPACE_NAME:-superset-dev}"
echo "📦 Using project name: ${PROJECT_NAME}"
echo "🌐 Frontend will be available at port 9001"
# Ensure we're in the right directory
@@ -18,11 +19,11 @@ fi
# Clean up any existing containers from this project
echo "🧹 Cleaning up existing containers..."
docker-compose -p "${CODESPACE_NAME}" -f docker-compose-light.yml down
docker-compose -p "${PROJECT_NAME}" -f docker-compose-light.yml down
# Start services
echo "🏗️ Building and starting services..."
docker-compose -p "${CODESPACE_NAME}" -f docker-compose-light.yml up -d
docker-compose -p "${PROJECT_NAME}" -f docker-compose-light.yml up -d
# Wait for services to be healthy
echo "⏳ Waiting for services to be ready..."
@@ -30,7 +31,7 @@ sleep 10
# Show status
echo "✅ Services started! Status:"
docker-compose -p "${CODESPACE_NAME}" -f docker-compose-light.yml ps
docker-compose -p "${PROJECT_NAME}" -f docker-compose-light.yml ps
echo ""
echo "📝 Default credentials:"
@@ -38,4 +39,4 @@ echo " Username: admin"
echo " Password: admin"
echo ""
echo "🌐 Access Superset at the forwarded port 9001"
echo "💡 To view logs: docker-compose -p ${CODESPACE_NAME} -f docker-compose-light.yml logs -f"
echo "💡 To view logs: docker-compose -p ${PROJECT_NAME} -f docker-compose-light.yml logs -f"