#2026.5.16-beta.6 iis with apt

1 messages · Page 1 of 1 (latest)

glass egret
#

after moving to beta 6 my OPENCLAW_DOCKER_APT_PACKAGES is being ignored

barren basaltBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

echo shoalBOT
# glass egret after moving to beta 6 my OPENCLAW_DOCKER_APT_PACKAGES is being ignored

I checked v2026.5.16-beta.6: OPENCLAW_DOCKER_APT_PACKAGES still exists, but it is a Docker build arg, not a runtime env var. So it only takes effect when the image is rebuilt.

Two common ways it looks “ignored”:

  1. You set it in .env after the image was already built, then only did docker compose up.
  2. You’re using OPENCLAW_IMAGE to pull a prebuilt image. In that path the setup script pulls the image and does not build, so apt packages cannot be baked in.

Try rebuilding explicitly:

export OPENCLAW_DOCKER_APT_PACKAGES="your packages here"
export OPENCLAW_IMAGE=openclaw:local
./scripts/docker/setup.sh

or, if you’re driving Compose yourself:

echo shoalBOT
# glass egret after moving to beta 6 my OPENCLAW_DOCKER_APT_PACKAGES is being ignored
docker compose build --no-cache --build-arg 'OPENCLAW_DOCKER_APT_PACKAGES=your packages here' openclaw-gateway
docker compose up -d

Docs reference: https://docs.openclaw.ai/install/docker and FAQ Docker note: https://docs.openclaw.ai/help/faq

If that still doesn’t install, paste the exact command you’re using plus the build log line around OPENCLAW_DOCKER_APT_PACKAGES; that should show whether the build arg is empty or the package install step is failing.

glass egret
#

i have it set in my .env, that would work?

echo shoalBOT
# glass egret i have it set in my .env, that would work?

Short version: only if it is in the shell environment at build time. Just having it written in .env is probably the trap.

I checked the beta.6 setup script: it writes/updates .env, but it does not generally source existing values from .env before building. So this can get ignored or even rewritten empty if you run setup with only the file edited.

Use:

export OPENCLAW_IMAGE=openclaw:local
export OPENCLAW_DOCKER_APT_PACKAGES="ffmpeg curl jq"
./scripts/docker/setup.sh

If you are using raw Compose, pass it as a build arg explicitly:

docker compose build --build-arg 'OPENCLAW_DOCKER_APT_PACKAGES=ffmpeg curl jq' openclaw-gateway
echo shoalBOT
glass egret
#

i pulled and checked out the new beta 6, and rebuilt the container.

echo shoalBOT
# glass egret i pulled and checked out the new beta 6, and rebuilt the container.

Got it. The key thing is how it was rebuilt: checking out beta 6 + rebuilding is not enough unless the build received the arg.

Please check the build output for this line/step:

--build-arg OPENCLAW_DOCKER_APT_PACKAGES=...

If it’s missing or empty, the apt step will be skipped even though .env contains it.

Two quick checks:

grep OPENCLAW_DOCKER_APT_PACKAGES .env
docker compose config | grep -n OPENCLAW_DOCKER_APT_PACKAGES
echo shoalBOT
# glass egret i pulled and checked out the new beta 6, and rebuilt the container.

But the real proof is the build command/log. For a guaranteed rebuild:

export OPENCLAW_IMAGE=openclaw:local
export OPENCLAW_DOCKER_APT_PACKAGES="your packages here"
docker compose build --no-cache --build-arg "OPENCLAW_DOCKER_APT_PACKAGES=$OPENCLAW_DOCKER_APT_PACKAGES" openclaw-gateway
docker compose up -d

Then verify inside the container, for example:

docker compose exec openclaw-gateway dpkg -l | grep 'package-name'

My suspicion: the rebuild happened, but Compose did not pass the .env value into Dockerfile ARG.

glass egret
#

how can i check the build log?

echo shoalBOT
# glass egret how can i check the build log?

Docker doesn’t keep a nice persistent “build log” like container logs. Easiest way is to rerun the build and save the output:

export OPENCLAW_DOCKER_APT_PACKAGES="your packages here"
docker compose build --no-cache --progress=plain --build-arg "OPENCLAW_DOCKER_APT_PACKAGES=$OPENCLAW_DOCKER_APT_PACKAGES" openclaw-gateway 2>&1 | tee openclaw-build.log

Then search it:

grep -n "OPENCLAW_DOCKER_APT_PACKAGES\|apt-get install" openclaw-build.log

If you’re using the setup script instead:

echo shoalBOT
# glass egret how can i check the build log?
export OPENCLAW_IMAGE=openclaw:local
export OPENCLAW_DOCKER_APT_PACKAGES="your packages here"
./scripts/docker/setup.sh 2>&1 | tee openclaw-setup.log
grep -n "OPENCLAW_DOCKER_APT_PACKAGES\|apt-get install" openclaw-setup.log

--progress=plain is the useful bit; otherwise BuildKit’s output can hide the actual step details.

glass egret
#

that breaks the intereactive setup, so i cant select anyoptions to get though the setup

echo shoalBOT
# glass egret that breaks the intereactive setup, so i cant select anyoptions to get though th...

Yep, piping through tee can break interactive prompts. For the interactive setup, don’t pipe it.

Run it normally with the env vars exported first:

export OPENCLAW_IMAGE=openclaw:local
export OPENCLAW_DOCKER_APT_PACKAGES="your packages here"
./scripts/docker/setup.sh

If you need to capture the interactive session, use script instead of tee:

export OPENCLAW_IMAGE=openclaw:local
export OPENCLAW_DOCKER_APT_PACKAGES="your packages here"
script -q -c './scripts/docker/setup.sh' openclaw-setup.log
echo shoalBOT
# glass egret that breaks the intereactive setup, so i cant select anyoptions to get though th...

Or split it into two steps: build first with logs, then run setup interactively:

export OPENCLAW_DOCKER_APT_PACKAGES="your packages here"
docker compose build --no-cache --progress=plain --build-arg "OPENCLAW_DOCKER_APT_PACKAGES=$OPENCLAW_DOCKER_APT_PACKAGES" openclaw-gateway 2>&1 | tee openclaw-build.log

export OPENCLAW_IMAGE=openclaw:local
./scripts/docker/setup.sh

That avoids breaking the prompt while still proving whether the apt packages were baked into the image.