weird docker compose situation (ui bux fix)

Conversation with Gemini

what is this? i was running docker compose push

=> [AriaOS-docs] resolving provenance for metadata file 0.0s

=> [AriaOS-app] resolving provenance for metadata file 0.0s

[+] build 6/6

✔ Image yaliwa2467/docs:main Built 1.2s

✔ Image yaliwa2467/app:main Built 1.2s

✔ Image yaliwa2467/support:main Built 1.2s

[+] push 19/39

✔ AriaOS-phpmyadmin Skipped 0.0s

✔ AriaOS-database Skipped 0.0s

⠸ yaliwa2467/app:main [⠀⠀⠀⠀] Pushing 0.4s

⠸ yaliwa2467/support:main [⣿] Pushing 0.4s

⠸ yaliwa2467/apis:main [⠀⠀⠀⠀⠀⠀] Pushing 0.4s

panic: runtime error: index out of range [75] with length 9 0.3s

⠹ yaliwa2467/web:main [⠀] Pushing 0.3s

goroutine 12 [running]: [⠀⣿⣿⣿⣿⣿⣿] 144.9kB / 12.27MB Pushing 0.3s

github.com/docker/compose/v5/cmd/display.(*ttyWriter).lineText(0xc0001f54d0, {{0xc000688120, 0x17}, {0x0, 0x0}, {0xc24b88e375256179, 0x18c83d6, 0x1eac820}, {0x0, 0x0, …}, …}, …)

github.com/docker/compose/v5/cmd/display/tty.go:313 +0xb35

github.com/docker/compose/v5/cmd/display.(*ttyWriter).print(0xc0001f54d0)

github.com/docker/compose/v5/cmd/display/tty.go:256 +0x6ac

github.com/docker/compose/v5/cmd/display.(*ttyWriter).Start.func1()

github.com/docker/compose/v5/cmd/display/tty.go:103 +0x45

created by github.com/docker/compose/v5/cmd/display.(*ttyWriter).Start in goroutine 1

github.com/docker/compose/v5/cmd/display/tty.go:88 +0xd5

ariaos@bombardier:~/Documents/AriaOS/server.ariaos.online$

This is a crash in the Docker Compose binary itself. Specifically, it is a “panic” (a fatal runtime error in the Go programming language) caused by a bug in how Docker Compose tries to render the progress bars in your terminal. What is happening?

The error index out of range [75] with length 9 tells us that the code responsible for drawing the “TTY” (the visual output in your terminal) tried to access a piece of data at position 75, but the list it was looking at only had 9 items.

This usually happens when:

Terminal Resizing: You resized your terminal window while the progress bars were updating.

Display Logic Bug: A bug in the ttyWriter component of Docker Compose v5 (which appears to be a development or very recent version) occurs when handling multiple simultaneous image pushes.

Complex Output: You have many services (app, support, apis, web, etc.) pushing at once, and the UI library is miscalculating the screen space or line count.

How to fix or bypass it

Since this is a UI rendering bug, the actual “push” logic might still be fine. Here are three ways to get around it:

  1. Disable the “Fancy” UI (Recommended)

You can force Docker to use a plain text output instead of the interactive progress bars. This bypasses the buggy tty.go code entirely. Bash

docker compose push –progress=plain

  1. Push services individually

If you only need to push specific images, do them one by one to reduce the clutter on the screen that triggers the crash: Bash

docker compose push app docker compose push docs

  1. Update (or Downgrade) Docker Compose

The stack trace mentions github.com/docker/compose/v5. Version 5 is extremely cutting-edge (most stable users are on v2.x).

If you are using a pre-release version, try switching to the stable Docker Compose V2.

If you just installed it, check for an update, as this looks like a bug that the Docker team would patch quickly.

Summary

Your images and your docker-compose.yml file are likely perfectly fine. The tool you’re using to upload them simply crashed while trying to draw the progress bar.

Would you like me to help you check your current Docker Compose version to see if it’s a known unstable build?

=> => sha256:10286f48c71be2a630e155ceb33e8e5132e861088b8d5db5ae0b2589912a958d 1.58MB / 1.58MB 9.4s

=> => sha256:718b77cc4686e40b578d074b3198c6047ddba87d7feb823af9b4307be83e449a 189.12MB / 189.12MB 63.7s

=> => sha256:ff4591d9913c80ed9f9c6c9e2affafa0056e4754ff8a1364eb276793ed64d1b1 2.46MB / 2.46MB 9.9s

=> => sha256:fdc43b75e66d34f3d3795f7d4ba91ee257fd53a7443a701211b76ff2facd41a3 8.35MB / 8.35MB 36.5s

=> => extracting sha256:bb263680fed18eecdc67f885094df6f589bafc19004839d7fdf141df236a61aa 11.1s

=> => sha256:30271a756915fc738d68a69b4632f93763ebe0175f99546f946de4158b074522 855B / 855B 215.6s

=> => sha256:d2995f37a2b84be2da3853e05100f7ced10cb31171b38db13194bb90272f4e8b 359B / 359B 86.7s

=> => extracting sha256:10286f48c71be2a630e155ceb33e8e5132e861088b8d5db5ae0b2589912a958d 0.1s

=> => extracting sha256:718b77cc4686e40b578d074b3198c6047ddba87d7feb823af9b4307be83e449a 8.9s

=> => extracting sha256:ff4591d9913c80ed9f9c6c9e2affafa0056e4754ff8a1364eb276793ed64d1b1 4.9s

=> => extracting sha256:fdc43b75e66d34f3d3795f7d4ba91ee257fd53a7443a701211b76ff2facd41a3 0.4s

=> => extracting sha256:30271a756915fc738d68a69b4632f93763ebe0175f99546f946de4158b074522 0.0s

=> => extracting sha256:d2995f37a2b84be2da3853e05100f7ced10cb31171b38db13194bb90272f4e8b 0.0s

=> [AriaOS-web mkdocs_build 2/6] RUN pip install markupsafe==2.0.1 120.2s

=> [AriaOS-app 2/6] WORKDIR /usr/share/nginx/html/ 82.5s

=> [AriaOS-app 3/6] COPY –chown=www-data:www-data –chmod=755 . . 11.5s

=> [AriaOS-manager 3/6] COPY –chown=www-data:www-data –chmod=755 . . 11.7s

=> [AriaOS-app 4/6] COPY entrypoint.sh /usr/local/bin/entrypoint.sh 1.1s

=> [AriaOS-manager 4/6] COPY entrypoint.sh /usr/local/bin/entrypoint.sh 1.0s

=> [AriaOS-app 5/6] RUN chmod +x /usr/local/bin/entrypoint.sh 25.3s

=> [AriaOS-manager 5/6] RUN chmod +x /usr/local/bin/entrypoint.sh 25.5s

=> CANCELED [AriaOS-support mkdocs_build 3/6] RUN pip install mkdocs-blog-plugin 8.0s

=> [AriaOS-apis mavenbuild 2/5] COPY pom.xml . 5.1s

=> [AriaOS-app 6/6] COPY default.conf /etc/nginx/conf.d/default.conf 5.9s

=> [AriaOS-manager 6/6] COPY default.conf /etc/nginx/conf.d/default.conf 6.0s

=> [AriaOS-apis mavenbuild 3/5] COPY src/ src/ 1.8s

=> [AriaOS-app] exporting to image 1.0s

=> => exporting layers 0.9s

=> => writing image sha256:3e311b5a57fcb567a3cd127d3cf224fa705d0330c6c5e18d2d1ae0bae78ade59 0.0s

=> => naming to docker.io/yaliwa2467/app:main 0.0s

=> ERROR [AriaOS-manager] exporting to image 0.5s

=> => exporting layers 0.5s

=> CANCELED [AriaOS-apis mavenbuild 4/5] RUN mvn install -DskipTests 0.5s


[AriaOS-manager] exporting to image:


target AriaOS-manager: failed to solve: stat /var/lib/docker/overlay2/rk5i7hblwbybbgfhgfonsvwge: no such file or directory

valorantdigital@bombardier:~/Desktop/server.ariaos.online$ d ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

valorantdigital@bombardier:~/Desktop/server.ariaos.online$

This new error is different from the first one. While the first crash was a UI bug, this one is a storage engine failure within Docker itself. What happened?

The error failed to solve: stat /var/lib/docker/overlay2/…: no such file or directory means that while Docker was trying to bundle your final image for AriaOS-manager, it looked for a specific file “layer” on your hard drive and couldn’t find it.

This usually happens because:

Build Cache Corruption: The "recipe" for your image thinks a layer exists because it's in the cache, but the actual files have been deleted or corrupted.

Concurrency Conflict: Since you are building many services at once (app, manager, apis, support), two processes might have tried to access or modify the same base layer at the same time, leading to a race condition.

Disk Space/I/O Issues: If your disk is nearly full or has I/O errors, Docker can fail to write layers correctly.

How to Fix It

You need to clear the “bad” cache and try again. Follow these steps in order:

  1. The “Soft” Reset (Clear Build Cache)

Run this to remove the build cache without deleting your actual images or volumes: Bash

docker builder prune

Then try your push again.

  1. The “Hard” Reset (If Step 1 fails)

If you still get the no such file or directory error, you need to force Docker to rebuild everything from scratch without using any cached layers: Bash

docker compose build –no-cache docker compose push

  1. Check Disk Space

Sometimes this happens because the /var/lib/docker partition is full. Check your space with: Bash

df -h

A Note on your workflow

I noticed in your first message you were running docker compose push. In modern Docker Compose, if the images don’t exist yet, it will try to build and push simultaneously.

Because you have so many services (app, manager, apis, support, web), your computer is trying to do a massive amount of work at once, which is likely why you hit that Go “panic” earlier and this “file not found” error now.

Try building first, then pushing:

docker compose build (Wait for it to finish completely)

docker compose push

Would you like me to help you check your Docker storage settings to see if your disk is hitting a limit?

21 gigs available. that’s not it.

Since you have 21GB available, space definitely isn’t the issue. This confirms that the problem is cache corruption or a race condition (where multiple build processes stepped on each other’s toes).

When Docker says no such file or directory in the overlay2 folder, it means the metadata (the “map”) of your image layers is out of sync with the actual files on the disk. The Fix: Clean the “Pipe”

You need to force Docker to forget the corrupted layer references. Run these commands in order:

Clear the Build Cache: This is the most likely culprit. It removes the temporary "solve" states that are pointing to the missing directory.
Bash

docker builder prune -f

Force a Fresh Build (One Service at a Time): To prevent that “Panic” crash you saw earlier and to ensure the layers are written correctly, build the failing service specifically without using the cache: Bash

docker compose build –no-cache AriaOS-manager

Push Again: Once that build finishes successfully, try the push again: Bash

docker compose push

Why did this happen?

Since you are building a complex project with multiple microservices (app, manager, apis, support), Docker Compose tries to run these builds in parallel to save time.

If AriaOS-app and AriaOS-manager share a base image (like nginx or php), and they both tried to download or extract that same base layer at the exact same microsecond, one process can sometimes “unlock” or move a directory that the other process was just about to read. This results in the stat: no such file or directory error.

Pro-Tip: If this keeps happening, you can limit Docker’s parallelism by using the COMPOSE_PARALLEL_LIMIT flag: Bash

COMPOSE_PARALLEL_LIMIT=1 docker compose push

(This forces it to handle services one by one, which is slower but much more stable on some systems.)

Would you like me to look at your Dockerfile for AriaOS-manager to see if there is an optimization that might prevent these layer conflicts?

=> => exporting layers 0.1s

=> => writing image sha256:e44a459ee7a898a48451b145314cb41894a14d57be67472136ab436fbc92e03a 0.0s

=> => naming to docker.io/yaliwa2467/docs:main 0.0s

=> [AriaOS-support] resolving provenance for metadata file 0.0s

=> [AriaOS-web] resolving provenance for metadata file 0.0s

=> [AriaOS-docs] resolving provenance for metadata file 0.0s

=> [AriaOS-apis stage-1 2/4] COPY –from=mavenBuild /target/server.ariaos.online-2.0.jar /server.ariaos.online.jar 5.5s

=> [AriaOS-apis stage-1 3/4] COPY –from=mavenBuild /src/main/resources/application.properties /application.properties 0.1s

=> [AriaOS-apis] exporting to image 0.7s

=> => exporting layers 0.5s

=> => writing image sha256:7719f6100fef0eb8e3921f7d66dc254e391fdf219ec9a60b766a0034dd04d288 0.0s

=> => naming to docker.io/yaliwa2467/apis:main 0.0s

=> [AriaOS-apis] resolving provenance for metadata file 0.0s

[+] build 6/6

[+] push 8/39

✔ AriaOS-phpmyadmin Skipped 0.0s

✔ AriaOS-database Skipped 0.0s

panic: runtime error: index out of range [41] with length 9 0.3s

⠸ yaliwa2467/manager:main [⠀⠀⠀⠀⣿⣿⣿⣿⠀⠀⠀⠀] Pushing 0.3s

goroutine 11 [running]: [⠀⠀⠀⠀⠀⠀] Pushing 0.3s

github.com/docker/compose/v5/cmd/display.(*ttyWriter).lineText(0xc000028e10, {{0xc000040cc0, 0x13}, {0x0, 0x0}, {0xc24b8973c3570e84, 0x27230d5, 0x1eac820}, {0x0, 0x0, …}, …}, …) 0.3s

⠸ yaliwgithub.com/docker/compose/v5/cmd/display/tty.go:313 +0xb35 0.3s

github.com/docker/compose/v5/cmd/display.(*ttyWriter).print(0xc000028e10) 0.3s

github.com/docker/compose/v5/cmd/display/tty.go:256 +0x6ac

github.com/docker/compose/v5/cmd/display.(*ttyWriter).Start.func1()

github.com/docker/compose/v5/cmd/display/tty.go:103 +0x45

created by github.com/docker/compose/v5/cmd/display.(*ttyWriter).Start in goroutine 1

github.com/docker/compose/v5/cmd/display/tty.go:88 +0xd5

ariaos@bombardier:~/Documents/AriaOS/server.ariaos.online$

this is back. i did a prune and everything and a rebuild.

This confirms it: you have discovered a persistent bug in Docker Compose’s UI code. Even though you fixed the “file not found” error by pruning and rebuilding, the panic is still happening because the code that draws the progress bars is physically incapable of handling the amount of data your terminal is sending it.

The error index out of range [41] with length 9 means your terminal is likely reporting more lines or data points than the internal “display list” can hold. The Immediate Workaround

To get your images pushed right now, you must bypass the fancy TTY display. This forces Docker to use a simple scrolling text list, which cannot crash this way: Bash

docker compose push –progress=plain

Why it keeps happening

Since you are using a version of Docker Compose identified in the logs as v5, you are likely using a very early experimental build or a development version (standard stable Docker is currently on v2.x).

The tty.go:313 crash is a classic “race condition” in the UI:

Multiple pushes happen at once (manager, apis, docs, etc.).

Each push tries to tell the terminal to draw a progress bar.

The "Manager" of the progress bars (the ttyWriter) loses track of how many bars are actually on the screen.

It tries to update bar #41, but it only thinks there are 9 bars. Crash.

How to permanently fix your environment

If you want to stop using –progress=plain every time, I recommend moving to a stable version of Docker Compose.

Check your version:
Bash

docker compose version

If it shows anything like "v5" or a "dev" build, you should replace it with the latest stable version from the official Docker GitHub releases.

Would you like me to give you the specific commands to download and install the stable binary for your Linux system?

created by github.com/docker/compose/v5/cmd/display.(*ttyWriter).Start in goroutine 1

github.com/docker/compose/v5/cmd/display/tty.go:88 +0xd5

ariaos@bombardier:~/Documents/AriaOS/server.ariaos.online$ docker compose push –progress=plain

unknown flag: –progress

ariaos@bombardier:~/Documents/AriaOS/server.ariaos.online$

Ah, it looks like your version of Compose is so experimental that it doesn’t even support the standard –progress flag used in Version 2. This confirms you are likely running a development build or a renamed binary that has a very different internal structure. Why the flag failed

In many newer or “v5” experimental builds of the Docker CLI, the progress flag has moved. Try this variation instead: Bash

docker –log-level info compose push

Alternatively, if that doesn’t work, we can bypass the “Fancy TTY” by telling Docker that your terminal is “dumb” (non-interactive). This usually forces Go applications to stop trying to draw complex progress bars: Bash

TERM=dumb docker compose push

The Real Fix: Get back to Stable

The “v5” in your path github.com/docker/compose/v5 is very strange because the official Docker Compose is currently only on v2.x. You are likely running a version that was pulled from a master branch or an unofficial repository which is clearly unstable.

To get a stable, working version of Docker Compose on your Linux machine, run these commands:

Download the latest stable binary (v2.32.4):
Bash

mkdir -p ~/.docker/cli-plugins/ curl -SL https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

Make it executable: Bash

chmod +x ~/.docker/cli-plugins/docker-compose

Verify the version: Bash

docker compose version

It should now say Docker Compose version v2.32.4 (or similar).

What happens now?

Once you are on the stable v2.x, the panic will disappear because the TTY rendering code in v2 is battle-tested. You will also get the –progress flag back if you ever need it.

Would you like me to show you how to check if there are multiple “docker-compose” binaries on your system that might be conflicting?

github.com/docker/compose/v5/cmd/display.(*ttyWriter).Start.func1()

github.com/docker/compose/v5/cmd/display/tty.go:103 +0x45

created by github.com/docker/compose/v5/cmd/display.(*ttyWriter).Start in goroutine 1

github.com/docker/compose/v5/cmd/display/tty.go:88 +0xd5

ariaos@bombardier:~/Documents/AriaOS/server.ariaos.online$ docker compose push –progress=plain

unknown flag: –progress

ariaos@bombardier:~/Documents/AriaOS/server.ariaos.online$ docker –log-level info compose push

[+] push 7/39

✔ AriaOS-phpmyadmin Skipped 0.0s

✔ AriaOS-database Skipped 0.0s

⠹ yaliwa2467/support:main [⠀] Pushing 0.3s

⠹ yaliwa2467/web:main [⠀⠀⠀⠀⠀⠀⠀] Pushing 0.3s

⠹ yaliwa2467/docs:main [⠀] Pushing 0.3s

panic: runtime error: index out of range [85] with length 9 0.2s

⠙ yaliwa2467/apis:main [⠀⠀⠀⠀⠀⠀] Pushing 0.2s

goroutine 12 [running]:[⠀⠀⠀⠀] Pushing 0.2s

github.com/docker/compose/v5/cmd/display.(*ttyWriter).lineText(0xc00001bb90, {{0xc000716a98, 0x17}, {0x0, 0x0}, {0xc24b899444b3cb3f, 0x16deaa4, 0x1eac820}, {0x0, 0x0, …}, …}, …)

github.com/docker/compose/v5/cmd/display/tty.go:313 +0xb35

github.com/docker/compose/v5/cmd/display.(*ttyWriter).print(0xc00001bb90)

github.com/docker/compose/v5/cmd/display/tty.go:256 +0x6ac

github.com/docker/compose/v5/cmd/display.(*ttyWriter).Start.func1()

github.com/docker/compose/v5/cmd/display/tty.go:103 +0x45

created by github.com/docker/compose/v5/cmd/display.(*tt

This is incredibly frustrating—it seems the “v5” version you are running is a specific experimental build that is hard-coded to crash whenever it handles more than 9 lines of terminal output. Because it’s an experimental version, it doesn’t recognize standard flags like –progress.

Since the UI logic is what’s breaking, we need to trick the program into thinking there is no “screen” to draw on. The “Dumb Terminal” Fix

Run this command. By setting TERM=dumb, you tell the Docker binary that your terminal cannot handle fancy animations, which forces it to skip the buggy tty.go code entirely: Bash

TERM=dumb docker compose push

Why your version is “v5” (and why it’s breaking)

The standard stable version of Docker Compose is v2.x. The “v5” in your error message refers to the internal Go module versioning (where Docker Compose recently moved to a v5 module path in their source code).

If you are seeing this, you are likely running a development/bleeding-edge build that was bundled with a recent update (possibly on a rolling-release distro like Arch or via a specific experimental repo). These builds are notorious for TTY (terminal) “index out of range” panics. How to get back to a Stable Version

If TERM=dumb works, that’s a great temporary band-aid. But for a permanent fix, you should replace that binary with the stable release.

Remove the problematic plugin: Check where it's located:
Bash

docker info | grep -i “compose”

Download the official stable v2.32.4 binary: Bash

Create the plugin folder if it doesn’t exist

mkdir -p ~/.docker/cli-plugins/

Download the stable Linux binary

curl -SL https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

Make it executable

chmod +x ~/.docker/cli-plugins/docker-compose

Verify it works: Bash

docker compose version

If it says v2.32.4, you are safe. The "panics" will stop.

Did the TERM=dumb command let the push complete, or did it still try to draw the progress bars?

github.com/docker/compose/v5/cmd/display.(*ttyWriter).print(0xc00001bb90)

github.com/docker/compose/v5/cmd/display/tty.go:256 +0x6ac

github.com/docker/compose/v5/cmd/display.(*ttyWriter).Start.func1()

github.com/docker/compose/v5/cmd/display/tty.go:103 +0x45

created by github.com/docker/compose/v5/cmd/display.(*ttyWriter).Start in goroutine 1

github.com/docker/compose/v5/cmd/display/tty.go:88 +0xd5

ariaos@bombardier:~/Documents/AriaOS/server.ariaos.online$ docker info | grep -i “compose”

compose: Docker Compose (Docker Inc.)

Path:     /usr/libexec/docker/cli-plugins/docker-compose

ariaos@bombardier:~/Documents/AriaOS/server.aria

Since your current binary is located at /usr/libexec/docker/cli-plugins/docker-compose, that is the system-level plugin provided by your package manager. Because it keeps crashing on the TTY (display) logic, we need to bypass that interface so your push can actually finish. Try the “Piping” Trick

If TERM=dumb doesn’t work, you can force Docker to stop using the interactive TTY by piping the output to cat. This effectively strips away the fancy progress bars that are causing the index crash: Bash

docker compose push | cat

Why this works

The ttyWriter in the code only activates when it detects an “interactive terminal.” By piping to cat, Docker sees a “pipe” instead of a terminal, so it switches to a simple, non-crashing text stream. How to Swap to the Stable Version

If you want to stop the crashes permanently, you should override that system plugin with the official stable version in your local user folder. Docker will prioritize the one in your home directory.

Download the Stable Binary:
Bash

mkdir -p ~/.docker/cli-plugins/ curl -SL https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

Set Permissions: Bash

chmod +x ~/.docker/cli-plugins/docker-compose

Verify it took over: Run docker compose version. It should now show v2.32.4.

Summary of what happened

The v5 path in your crash log confirms you are running a very new, likely experimental build of the Compose source code where the “parallel progress bar” logic is broken. It’s trying to update a line in your terminal (line 85) that it doesn’t think exists (it only thinks there are 9), causing the Go “panic.”

Did piping to cat allow the push to finish without crashing?

yea that did it

Great. Using | cat is the “silver bullet” for these types of display crashes because it strips away the terminal’s ability to be “smart,” forcing the program to just spit out raw text instead of trying to manage complex UI elements. Why it worked

When you pipe to cat, the Docker binary’s internal check for an interactive terminal (isatty) returns false. It realizes it can’t send “move cursor” or “draw progress bar” commands, so it defaults to a simple logging mode. This completely avoids the buggy tty.go code that was causing your index out of range error. Moving Forward

While the pipe works, it’s a bit of a hassle to type every time. Now that your push is done, I’d strongly recommend one of these two long-term fixes so you don’t have to deal with crashes in the future:

The "Lazy" Fix: Alias the command in your .bashrc or .zshrc:
Bash

alias dpush='docker compose push | cat'

The "Correct" Fix: Install the stable v2.x binary into ~/.docker/cli-plugins/ as mentioned before. Even though your system has the "v5" experimental version in /usr/libexec, Docker will prefer the one in your home directory if you put it there.

Is there anything else with the AriaOS deployment giving you trouble, or are all the images successfully in the registry now?