Compare commits

...

3 Commits

Author SHA1 Message Date
Maxime Beauchemin
54e6bd6597 chore: remove unnecessary curl installation from Dockerfile
Node.js healthcheck uses built-in http module, no need for curl.
2026-01-20 16:49:54 +00:00
Maxime Beauchemin
1a8bfca18e Use Node.js for node container healthcheck
Replaces /proc/net/tcp parsing with a proper Node.js-based HTTP
healthcheck similar to Flask's curl-based approach. Uses Node's built-in
http module to check if webpack dev server is responding.

This is more maintainable and portable than parsing kernel network state.
2026-01-20 16:07:38 +00:00
Maxime Beauchemin
bc76ab4eec fix(docker): set FLASK_RUN_HOST for docker-compose-light networking
Fixes Flask backend connectivity in docker-compose-light setup by
setting FLASK_RUN_HOST=0.0.0.0 environment variable.

Without this variable, Flask's development server only binds to
127.0.0.1 (localhost), preventing the webpack dev server container
from proxying requests to the backend API. This caused health check
timeouts and made the application inaccessible.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-20 16:06:51 +00:00
2 changed files with 51 additions and 1 deletions

View File

@@ -111,13 +111,22 @@ services:
depends_on:
superset-init-light:
condition: service_completed_successfully
superset-node-light:
condition: service_healthy
volumes: *superset-volumes
healthcheck:
test: ["CMD-SHELL", "/app/docker/docker-healthcheck.sh"]
interval: 30s
timeout: 30s
retries: 3
start_period: 60s
environment:
DATABASE_HOST: db-light
DATABASE_DB: superset_light
POSTGRES_DB: superset_light
SUPERSET__SQLALCHEMY_EXAMPLES_URI: "duckdb:////app/data/examples.duckdb"
SUPERSET_CONFIG_PATH: /app/docker/pythonpath_dev/superset_config_docker_light.py
FLASK_RUN_HOST: 0.0.0.0
GITHUB_HEAD_REF: ${GITHUB_HEAD_REF:-}
GITHUB_SHA: ${GITHUB_SHA:-}
@@ -154,6 +163,12 @@ services:
# it'll mount and watch local files and rebuild as you update them
DEV_MODE: "true"
BUILD_TRANSLATIONS: ${BUILD_TRANSLATIONS:-false}
healthcheck:
test: ["CMD-SHELL", "/app/docker/docker-healthcheck-node.sh"]
interval: 10s
timeout: 5s
retries: 3
start_period: 90s
environment:
# set this to false if you have perf issues running the npm i; npm run dev in-docker
# if you do so, you have to run this manually on the host, which should perform better!
@@ -163,7 +178,7 @@ services:
# configuring the dev-server to use the host.docker.internal to connect to the backend
superset: "http://superset-light:8088"
# Webpack dev server configuration
WEBPACK_DEVSERVER_HOST: "${WEBPACK_DEVSERVER_HOST:-127.0.0.1}"
WEBPACK_DEVSERVER_HOST: "${WEBPACK_DEVSERVER_HOST:-0.0.0.0}"
WEBPACK_DEVSERVER_PORT: "${WEBPACK_DEVSERVER_PORT:-9000}"
ports:
- "${NODE_PORT:-9001}:9000" # Parameterized port, accessible on all interfaces

View File

@@ -0,0 +1,35 @@
#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Health check for webpack dev server using Node.js HTTP module
node -e "
const http = require('http');
const req = http.request({
hostname: 'localhost',
port: ${WEBPACK_DEVSERVER_PORT:-9000},
path: '/',
method: 'HEAD',
timeout: 3000
}, (res) => {
res.resume();
process.exit(0);
});
req.on('error', () => process.exit(1));
req.on('timeout', () => { req.destroy(); process.exit(1); });
req.end();
" || exit 1