From dd4858720bb9b4ad58916ca0c77a2b1b44b30f65 Mon Sep 17 00:00:00 2001 From: Nico Hinderling Date: Fri, 27 Mar 2026 14:24:49 -0700 Subject: [PATCH 1/3] fix(docker): Split CMD into ENTRYPOINT + CMD for multi-mode support The Dockerfile used CMD ["launchpad", "serve"] with no ENTRYPOINT. The taskworker K8s deployment overrides args to run the worker subcommand, but without an ENTRYPOINT this replaces the entire command instead of just the arguments. Split into ENTRYPOINT ["launchpad"] + CMD ["serve"] so the serve deployment uses the default and the taskworker deployment can override CMD via K8s args to run "launchpad worker". Co-Authored-By: Claude --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index be79b032..7bf9207a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -113,4 +113,5 @@ ARG LAUNCHPAD_VERSION_SHA ENV LAUNCHPAD_VERSION_SHA=$LAUNCHPAD_VERSION_SHA # Default command -CMD ["launchpad", "serve"] +ENTRYPOINT ["launchpad"] +CMD ["serve"] From 2063d91c9c74ff830f7c1bd75ccaf753b1697b93 Mon Sep 17 00:00:00 2001 From: Nico Hinderling Date: Fri, 27 Mar 2026 14:27:10 -0700 Subject: [PATCH 2/3] chore(docker): Add comment explaining ENTRYPOINT/CMD split Co-Authored-By: Claude --- Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7bf9207a..79086e1d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -112,6 +112,8 @@ EXPOSE 2218 ARG LAUNCHPAD_VERSION_SHA ENV LAUNCHPAD_VERSION_SHA=$LAUNCHPAD_VERSION_SHA -# Default command +# ENTRYPOINT/CMD split allows K8s deployments to override the subcommand via `args`. +# - Serve mode (deployment.yaml): uses default CMD -> "launchpad serve" +# - Worker mode (taskworker-deployment.yaml): overrides CMD via args -> "launchpad worker ..." ENTRYPOINT ["launchpad"] CMD ["serve"] From 036fa85bee9e43d6b37ad831a6a57b94227b04f4 Mon Sep 17 00:00:00 2001 From: Nico Hinderling Date: Fri, 27 Mar 2026 14:28:18 -0700 Subject: [PATCH 3/3] fix(docker): Update command references for ENTRYPOINT split Docker Compose `command` and `docker run` args override CMD but not ENTRYPOINT, so references that included "launchpad" as the first arg would result in "launchpad launchpad ...". Drop the leading "launchpad" from devservices config and CI workflow, and use --entrypoint for the pytest docker run. Co-Authored-By: Claude --- .github/workflows/ci.yml | 4 ++-- devservices/config.yml | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2126fe29..dd542858 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -117,7 +117,7 @@ jobs: -e KAFKA_BOOTSTRAP_SERVERS="kafka:9093" \ -e KAFKA_GROUP_ID="launchpad-test-ci" \ -e KAFKA_TOPICS="preprod-artifact-events" \ - launchpad-test python -m pytest -n auto tests/ --ignore=tests/e2e -v + --entrypoint python launchpad-test -m pytest -n auto tests/ --ignore=tests/e2e -v - name: Show Kafka logs on failure if: failure() @@ -133,7 +133,7 @@ jobs: -e LAUNCHPAD_ENV=development \ -e LAUNCHPAD_HOST=localhost \ -e LAUNCHPAD_PORT=2218 \ - launchpad-test launchpad --help + launchpad-test --help e2e: runs-on: ubuntu-latest diff --git a/devservices/config.yml b/devservices/config.yml index 24414903..39b8cb30 100644 --- a/devservices/config.yml +++ b/devservices/config.yml @@ -26,7 +26,6 @@ services: ports: - 127.0.0.1:2218:2218 # Bind to localhost only - no external access command: - - launchpad - serve - --verbose healthcheck: