Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[Plugin] Docker Compose Manager

Featured Replies

  • Author
6 hours ago, unraid_fk34 said:

Thanks for getting back to me.

Checking if all the stacks are still in the mentioned path is the first thing I did when this started occurring. Everything is there.

But what I got in all of my stack folders are these other weird duplicates. I don't know exactly when they started popping up but they are not part of the daily backup.

 

Screenshot2025-03-06at16_20_33.thumb.png.15b90cd82f346a3f58fe950e85a9cf00.png

 

---

 

This is how my compose tab looks btw. There is no option for anything like add stacks. Just completely blank:

 

Screenshot2025-03-06at16_21_04.thumb.png.48029bf795879cf7e56a0e62cf2ce55e.png

 

Oh and important to note. All my dockers are running and active. They start up normally after a reboot. Just docker compose manager isn't showing anything.

Having those extra files in the folder is likely the reason that the ui is messed up. They do not belong there. As to how they got there, have you had any trouble with flash drive corruption? If i remember correctly file names like FSCK00000 are produced by a file system check. Remove that and everything that start with ._

  • Replies 872
  • Views 326.3k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • I've been playing with the code behind this plugin and have made a couple of tweaks.  I'd be interested on peoples thoughts and suggestions.   The first allows you to specify any .env file. 

  • I've recently started using Compose Manger to orchestrate my containers in Unraid. I've used docker-compose for a long time on old servers, but moved away from it when I started using Unraid, as I pre

  • In the recent update, orphaned image is now automatically removed. Thank you.   Is it possible to also update the local sha256 hash in this file /var/lib/docker/unraid-update-status.json? Si

Posted Images

5 hours ago, bmartino1 said:

I would recommend backing up the docker compose files that you do have and deleting the folder off the flash drive and do a plugin reinstall to regain webui controls back.

 

I just did exactly that and it did the trick. Probably something corrupted in the install files or something. When it pulled  the plugin fresh from the Community Apps it appeared again. Added the stacks to the projects folder afterwards and all is running again after the reboot. The only weird thing that happened after the reboot is that the Compose Plugin Settings moved from the Settings tab to the Tools tab (under System Information) after the reboot. But all is working nonetheless. Thank you

31 minutes ago, primeval_god said:

Having those extra files in the folder is likely the reason that the ui is messed up. They do not belong there. As to how they got there, have you had any trouble with flash drive corruption? If i remember correctly file names like FSCK00000 are produced by a file system check. Remove that and everything that start with ._

You are probably right. I had a failing boot drive recently which I replaced and switched licence to. I had it occure before the switch but after a couple reinstalls and reboots it appeared again. After the flash drive replacement it appeared pretty quickly. So probably it was the reason for all this. The only fix was manually deleting the compose folder on the boot drive and then copy my projects into the newly created compose plugin folder.

The ._ files aren't duplicates, they're junk metadata sidecar files created by macOS. Shouldn't affect anything. 

  • Author
3 hours ago, Kilrah said:

The ._ files aren't duplicates, they're junk metadata sidecar files created by macOS. Shouldn't affect anything. 

Maybe, maybe not. The compose plugin is not super well coded if I do say so myself. A design expectation is that the compose folder on the boot drive contains only those files created by the compose plugin itself. So far as what bugs might occur from extra files in that directory tree, here be dragons.

Edited by primeval_god

Trying to install this composer https://github.com/LiammCodes/cs2-dedicated-server and using the docker-compose.yml file. Getting "Permission Error". Changed ./cs2-data:/home/steam/cs2-dedicated to ./cs2-data:/mnt/user/appdata/steam/cs2-dedicated but getting "Error app 730 state is 0x202 after update job"

16 hours ago, Spao said:

Trying to install this composer https://github.com/LiammCodes/cs2-dedicated-server and using the docker-compose.yml file. Getting "Permission Error". Changed ./cs2-data:/home/steam/cs2-dedicated to ./cs2-data:/mnt/user/appdata/steam/cs2-dedicated but getting "Error app 730 state is 0x202 after update job"

 

i think you modified the wrong side of the

:

 

docker-compose syntax is 

 

host-path:container-path

 

so the compose.yml is setup to bind-mount:

./cs2-data (on the host, unraid in this case)

 

to

 

/home/steam/cs2-dedicated (in the container)

 

 

try setting your "volume" in the compose as follows:
 

/mnt/user/appdata/cs2-dedicated:/home/steam/cs2-dedicated 

 

and see what you get.

10 hours ago, xrichnj said:

 

i think you modified the wrong side of the

:

 

docker-compose syntax is 

 

host-path:container-path

 

so the compose.yml is setup to bind-mount:

./cs2-data (on the host, unraid in this case)

 

to

 

/home/steam/cs2-dedicated (in the container)

 

 

try setting your "volume" in the compose as follows:
 

/mnt/user/appdata/cs2-dedicated:/home/steam/cs2-dedicated 

 

and see what you get.

Thanks, it was that simple. First time using compose, so I was wondering what volume is, and if you have to link it do a different path :)

  

1 hour ago, Spao said:

Thanks, it was that simple. First time using compose, so I was wondering what volume is, and if you have to link it do a different path :)

 

volume is a space on the host where the docker data is stored.

review:

https://docs.docker.com/engine/storage/volumes/

 

some other uraid only recommend extra options per copose docker:
 

    labels:
      # Unraid Compose Web UI Only
      net.unraid.docker.webui: "http://[IP]:[PORT:80]"
      net.unraid.docker.icon: "https://I am the image in the top for the docker.png"
      folder.view: "Advanced_stack_folder_name"
      net.unraid.docker.managed: "composeman"
      

*this should also auto fill and fix the compose stack UI options...

 

Here is a Prometheus example, so note the volumes called for the Prometheus docker...

 

the docker compose options are broken into:
Unraid host path : inside docker - container path...

 

I can define it at the container volume option or use a variable called at the end to point to the location.

In this example. I made a new stack and advance set to  

/mnt/user/appdata/netprobe

 

since the docker compose is in netprobe I have a config folder. I can call ./ as /mnt/user/appdata/netprobe is the root direct for the host call to point to unraid host level 

 

prometheus:
    restart: always
    container_name: netprobe-prometheus
    image: prom/prometheus
    volumes:
      - ./config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus  # Persistent local storage for Prometheus data
#      - /mnt/user/appdata/resolv.conf:/etc/resolv.conf:ro
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--storage.tsdb.retention.time=30d'  # Adjust retention to 30 days
    networks:
      - netprobe-net
    dns:
#      - 192.168.2.3
      - 192.168.2.1
      - 8.8.8.8
    logging:
      options:
        max-size: "50m"
        max-file: "1"
    labels:
      net.unraid.docker.icon: 'https://raw.githubusercontent.com/selfhosters/unRAID-CA-templates/master/templates/img/prometheus.png'
      folder.view: netprobe_lite
      net.unraid.docker.managed: 'composeman'
      net.unraid.docker.shell: '/bin/sh'
    
      
#volume example to unraid host path...
volumes:
  prometheus_data:
    driver: local
    driver_opts:
      type: none
      device: ./data/promethus
      o: bind

a unriad compose stack example:

 

https://github.com/bmartino1/netprobe_lite/blob/master/docker-compose.yml

 

 

Edited by bmartino1
Data

2 hours ago, Spao said:

Thanks, it was that simple. First time using compose, so I was wondering what volume is, and if you have to link it do a different path :)

 

glad it worked for you! most containers are setup to be looking for certain paths and ports on the container side, and this cannot be (easily) changed. 

 

 

so unless you really know what youre doing:

for ca app docker templates, only change the "host path" and "host port" fields in the template, leave the "container path" and "container port" alone.

 

for compose files, its the same idea. for volumes and ports, set the left side of the " : " to the port and/or path you want to use on unraid, and leave the right side of the " : " alone.

Container icons not showing due to HTML coding issue

 

 

There appears to be some coding issue somewhere, either in the Compose plugin or Unraid itself when it comes to showing icons defined in the compose plugin UI.

 

I have the icon, in jpg, stored in the appdata folder of the container, and I have set all the defined containers in the compose file set to use the same icon file.

 

image.thumb.png.03a836c89b32c5d99d23ad838d98fc64.png

 

No icons show in the UR docker container list.

 

image.png.39ac2dfdde7b9f3d37079aad6043b825.png

 

 

but digging in the code shows that it's trying to.

 

image.thumb.png.59750d16f3f7faf4a576da2a6b29c405.png

 

The green highlighted span above shows the corrected code based on the working icons in the UR docker container list. The red highlighted span shows the code generated by either UR or the compose plugin. For some reason, it treats the <img> tag as a <i> tag (used for displaying fonts in italics) and applies a 'fa' class along with trying to apply another class using the icon file path and filename as the descriptor.

 

This problem is not a cache issue but a programmatic problem with how Compose passes the icon data to UR for rendering or how UR processes the data it is passed.

 

 

PS. On another note, some people put icons on the boot thumb drive, but I would avoid doing so as it adds more content to the thumb drive, requiring further activity on the disk.

Edited by aglyons

Feature Request

 

I just found out that we can add the Compose tab to the main UR menu bar. I thought it odd that while it shows the compose file entries, it doesn't show any compose containers.

 

I would like to be able to keep only template containers on the Dockers tab and have the compose containers listed on the Compose tab. While they are all Docker containers, having the option to keep them separated would be nice to keep things organized.

19 minutes ago, aglyons said:

 

 

I have the icon, in png, stored in the appdata folder of the container, and I have set all the defined containers in the compose file set to use the same icon file.

a png does not end in .jpg.

But yes, jpgs dont work as you expect. Use a real png and then it will work.

22 minutes ago, Mainfrezzer said:

a png does not end in .jpg.

But yes, jpgs dont work as you expect. Use a real png and then it will work.

typo in the post. It is and always was a jpg file. It's saved as a jpg and entered in the icon field as a jpg.

 

The problem remains.

 

 

EDIT: The icons HAVE to be png? Why is that? The icons were showing up correctly in the appdata backup plugin list, just not the UR docker containers list.

Edited by aglyons

17 minutes ago, aglyons said:

 

EDIT: The icons HAVE to be png? Why is that? 

because its coded like that

 

$image = substr($icon,-4)=='.png' ? "<img src='$icon?".filemtime("$docroot{$info['icon']}")."' class='img' onerror=this.src='/plugins/dynamix.docker.manager/images/question.png';>" : (substr($icon,0,5)=='icon-' ? "<i class='$icon img'></i>" : "<i class='fa fa-$icon img'></i>");

https://github.com/unraid/webgui/blob/master/emhttp/plugins/dynamix.docker.manager/include/DockerContainers.php

Edited by Mainfrezzer

  • Author
3 hours ago, aglyons said:

Container icons not showing due to HTML coding issue

This is not an issue of the compose plugin. Icon handling is a function of the built in Dockerman subsystem. All the compose plugin does is pass the text you enter along to Dockerman via a container label.

  • Author
2 hours ago, aglyons said:

Feature Request

 

I just found out that we can add the Compose tab to the main UR menu bar. I thought it odd that while it shows the compose file entries, it doesn't show any compose containers.

 

I would like to be able to keep only template containers on the Dockers tab and have the compose containers listed on the Compose tab. While they are all Docker containers, having the option to keep them separated would be nice to keep things organized.

I dont plan on implementing this sorry. Display and control of individual containers (or groups of them) is beyond the scope of this plugin. While I accepted the code for making a compose tab on the menu bar (because it was kindly provided to me by another developer) my opinion remains that the Compose plugin belongs under the Docker tab as an addition to Dockerman functionality not a standalone.

Perhaps this is obvious to more advanced users, but it took me a long time to realize that using a hyphen in my stack names was causing errors. When I executed "docker compose up" in the command line / terminal with those stacks, they would run successfully but the Compose GUI wouldn't show the green arrows next to them and wouldn't allow me to use their "compose down" buttons. For anyone else searching this thread for "hyphen" or "dash," make sure to remove them.

some come form program lanugae caoncepts. Spaces, @, %, & *... special caharter liek the dash shouldn't be used as reading and parse code will mean somthing else.

https://docs.docker.com/compose/how-tos/profiles/

 

Other nice hints:

 

Debugging Docker Compose applications involves several strategies to identify and resolve issues within a multi-container environment. Here's a breakdown of common techniques:

 

1. Examine Container Status and Logs

Use docker-compose ps to check the status of all containers defined in your docker-compose.yml file, identifying any that have exited or are not running as expected.

Employ docker-compose logs to inspect the logs of specific containers or all services, helping to pinpoint errors or unexpected behavior during startup or runtime. Add --follow to stream logs in real-time. Use --since and --until to filter logs by timestamp.

 

2. Interactive Shell Access

Gain direct access to a running container using docker-compose exec <service_name> /bin/sh or docker-compose exec <service_name> /bin/bash. This allows you to explore the container's file system, run commands, and further investigate the environment.

 

3. Debugging During Build

If build failures occur, add DOCKER_BUILDKIT=0 before your build command to see the output of each step. Use docker-compose up --build --no-cache to force a rebuild and avoid using cached layers, ensuring you see the logs for all steps.

Docker Buildx also offers a --on=error flag to initiate a debug session when a build fails, allowing you to explore the image state at the point of failure.

 

4. Using Docker Debug

The docker debug command provides a way to enter a container or image, even if it lacks a shell. It's particularly useful for debugging slim images. It doesn't modify the original image and comes with a toolbox of common Linux tools.

 

5. IDE Integration

Many IDEs, such as Visual Studio Code and JetBrains Rider, offer integrated Docker and Docker Compose debugging tools. These tools allow you to set breakpoints, step through code, and inspect variables within your containers.

6. Network Inspection

Ensure containers can communicate with each other by checking the Docker network. Use docker network inspect <network_name> to view network configurations and verify container connectivity.

 

7. Resource Limits

If containers are crashing or behaving erratically, investigate resource limits. Use docker stats to monitor CPU, memory, and I/O usage of your containers. Adjust resource limits in your docker-compose.yml file if necessary.

 

8. Debug Flags

The -D or --debug flag for Docker commands provides more verbose output, which can be helpful for diagnosing issues. It is a synonym for --log-level=debug.

 

9. Check Docker Daemon Logs

The Docker daemon logs may contain information about errors or issues that are not visible in container logs. Access these logs using journalctl -u docker.service on systems using systemctl, or check /var/log/messages, /var/log/daemon.log, or /var/log/docker.log on older systems.

 

10. Docker Extension Dev Debug

For debugging Docker extensions, use docker extension dev debug <extension_name> to open Chrome DevTools when the Extensions tab is selected. docker extension dev reset <extension_name> stops this behavior.

Is there any way for me to schedule one of the stacks I have in Compose Manager to restart every X days or so?

I am trying to isolate the compose containers to only use certain cores. I tried cpuset_cpus: "10,11,12,13" but when running compose up it fails saying that the property is not allowed. Most likely that's due to this plugin using a strict schema. Is there another way to set this so the containers only use those cores?

Edited by Bradley Hayes

  • Author
22 hours ago, Bradley Hayes said:

I am trying to isolate the compose containers to only use certain cores. I tried cpuset_cpus: "10,11,12,13" but when running compose up it fails saying that the property is not allowed. Most likely that's due to this plugin using a strict schema. Is there another way to set this so the containers only use those cores?

The proper compose syntax for cpu set is 
 

cpuset: 10,11,12,13

 

  • Author
On 3/24/2025 at 5:44 PM, emsixteen said:

Is there any way for me to schedule one of the stacks I have in Compose Manager to restart every X days or so?

There is no such feature within this plugin. You would have to script something yourself. 

Hello,

I have a set of Docker Compose containers with a specific network configuration like:

networks:
      br0:
        ipv4_address: 192.168.x.x
dns:
      - 192.168.x.x

When I start this container, I get an error message like “Error response from deamon: could not find a network matching network mode ...” (screenshot attached). But when I change something, like disable/enable dns, the docker container starts without problems. What is the problem, unfortunately I have not found anything in the forum.

 

Thanks for any constructive answers.

kleiner-onliner

Screenshot 2025-03-26 122851.png

30 minutes ago, kleiner-onliner said:

Hello,

I have a set of Docker Compose containers with a specific network configuration like:

networks:
      br0:
        ipv4_address: 192.168.x.x
dns:
      - 192.168.x.x

When I start this container, I get an error message like “Error response from deamon: could not find a network matching network mode ...” (screenshot attached). But when I change something, like disable/enable dns, the docker container starts without problems. What is the problem, unfortunately I have not found anything in the forum.

 

Thanks for any constructive answers.

kleiner-onliner

Screenshot 2025-03-26 122851.png

 

when using the preexisting unraid networks..

you need 2 things. one under the image geting teh static ip form the lan over that network's example:

 

    networks:
       br0: #set to unraid default custom docker netwroking interface in use (br0, bond0, eth0, etc...)
           ipv4_address: 192.168.2.50 # Change this as needed for static IP

 

And the network call at the bottom of the config... example:
 

networks:
    br0:
        external: true



heres a full compose config example using that for a pihole dev test image using alpine...

 

services:
  pihole:
    container_name: pihole_v6
    hostname: 'pi.hole'
    image: devzwf/pihole-dot-doh:2025.03.0-1.v6dev
    networks:
       br0: #set to unraid default custom docker netwroking interface in use (br0, bond0, eth0, etc...)
           ipv4_address: 192.168.2.50 # Change this as needed for static IP
    ports:
      # DNS Ports
      - "53:53/tcp"
      - "53:53/udp"
      # Default HTTP Port
      - "80:80/tcp"
      # Default HTTPS Port. FTL will generate a self-signed certificate
      - "443:443/tcp"
      # Uncomment the below if using Pi-hole as your DHCP Server
      #- "67:67/udp"
    environment:
      # Set the appropriate timezone for your location (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
      TZ: "America/Chicago"
      # Set a password to access the web interface. Not setting one will result in a random password being assigned
      FTLCONF_webserver_api_password: "test"
      # DoT: unbound (127.0.0.1#5335), DoH: cloudflared (127.1.1.1#5153)
      FTLCONF_dns_upstreams: "127.1.1.1#5153;127.0.0.1#5335"
      FTLCONF_dns_listeningMode: "all"
      FTLCONF_misc_etc_dnsmasq_d: 'true'
    labels:
      # Unraid Compose Web UI Only
      net.unraid.docker.webui: "http://[IP]:[PORT:80]/admin"
      net.unraid.docker.icon: "https://raw.githubusercontent.com/devzwf/unraid-docker-templates/main/images/pihole-logo-bw.png"
      folder.view: "pihole-dot-doh"
      net.unraid.docker.managed: "composeman"
    volumes:
      #- "/mnt/vm-zfs/Dockers/appdata/pihole-dot-doh/entrypoint.sh:/entrypoint.sh:ro" 
      #updated in lattest docker tag:2025.02.4-v6dev
      # Bind mount entrypoint.sh using fixed script above for teting...
      - "/mnt/vm-zfs/Dockers/appdata/pihole-dot-doh/etc-pihole:/etc/pihole:rw"
      - "/mnt/vm-zfs/Dockers/appdata/pihole-dot-doh/etc-dnsmasq.d:/etc/dnsmasq.d:rw"
      - "/mnt/vm-zfs/Dockers/appdata/pihole-dot-doh/config:/config:rw"
    dns:
#      - 192.168.2.3
      - 192.168.2.1
      - 8.8.8.8
    cap_add:
      # See https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
      # Required if you are using Pi-hole as your DHCP server, else not needed
       - NET_ADMIN
       - CAP_SYS_NICE
       - CAP_SYS_TIME
    restart: unless-stopped

networks:
    br0:
        external: true


https://docs.docker.com/compose/how-tos/networking/

https://docs.docker.com/reference/compose-file/networks/

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.