# Docker Compose Docker Compose explains how this part of Flowline works and how to use it in a real workflow. This page is dummy content for testing the Cloudairy wiki: structure, navigation, search and rendering. > **Note:** Flowline is a fictional automation product. Section: **Deploy › Self-host**. ## Prerequisites - A Flowline account (cloud or self-hosted) - Editor access to the project - About 9 minutes ## How it works Every workflow starts with a **trigger**, passes *items* from node to node, and ends when the last node finishes. Docker Compose fits in the middle of that chain: it receives items, does its work, and hands the result to the next node. Use `$json` to read the current item and `$node["Name"]` to reach an earlier node. ![Docker Compose — sample screenshot](https://picsum.photos/seed/docker-compose/1200/640) ## Step-by-step 1. Open the workflow editor and select **Add node**. 2. Search for **Docker Compose** and add it to the canvas. 3. Fill in the required parameters (see the table below). 4. Select **Test step** to run it with sample data. 5. Check the output panel, then **Save** the workflow. ## Parameters | Parameter | Type | Required | Description | | --- | --- | --- | --- | | Name | string | Yes | A label shown on the canvas | | Mode | option | Yes | `run once` or `run per item` | | Timeout | number | No | Seconds before the step fails (default 54) | | Retry on fail | boolean | No | Retries up to 3 times with back-off | ## Example ```json { "name": "Docker Compose", "nodes": [ { "type": "trigger.webhook", "path": "/docker-compose" }, { "type": "core.set", "values": { "status": "ok", "retries": 3 } } ], "active": true } ``` > **Warning:** Changing docker compose on a running production workflow takes effect on the next execution. Test in a copy first. > **Tip:** Press **Ctrl** + **Enter** to run the current step without leaving the keyboard. ## Troubleshooting | Symptom | Likely cause | Fix | | --- | --- | --- | | Step shows *No output* | The previous node returned zero items | Pin sample data on the previous node | | `401 Unauthorized` | Expired credential | Reconnect it under **Credentials** | | Execution times out | Large payload | Split items with **Split Out** | ## Related - **Build your first workflow** - **Expressions** - **Error handling**