{
  "schemaVersion": "1.0",
  "item": {
    "slug": "docker-compose",
    "name": "Docker Compose",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ivangdavila/docker-compose",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/docker-compose",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/docker-compose",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=docker-compose",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "docker-compose",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-02T15:41:04.110Z",
      "expiresAt": "2026-05-09T15:41:04.110Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=docker-compose",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=docker-compose",
        "contentDisposition": "attachment; filename=\"docker-compose-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "docker-compose"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/docker-compose"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/docker-compose",
    "agentPageUrl": "https://openagent3.xyz/skills/docker-compose/agent",
    "manifestUrl": "https://openagent3.xyz/skills/docker-compose/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/docker-compose/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "depends_on Ready Condition",
        "body": "depends_on: alone only waits for container start—service likely not ready yet\nAdd healthcheck + condition for actual readiness:\n\ndepends_on:\n  db:\n    condition: service_healthy\n\nWithout healthcheck defined on target service, service_healthy fails"
      },
      {
        "title": "Healthcheck start_period",
        "body": "healthcheck:\n  test: [\"CMD\", \"pg_isready\"]\n  start_period: 30s\n\nstart_period: initial grace period—health failures don't count during this time\nSlow-starting services (databases, Java apps) need adequate start_period\nWithout it, container marked unhealthy before it finishes initializing"
      },
      {
        "title": "Volume Destruction",
        "body": "docker compose down preserves volumes\ndocker compose down -v DELETES ALL VOLUMES—data loss\n-v often added by habit from tutorials—catastrophic in production\nNamed volumes survive down; anonymous volumes deleted on down"
      },
      {
        "title": "Resource Limits in Development",
        "body": "deploy:\n  resources:\n    limits:\n      memory: 512M\n\nSet limits during development—catches memory issues early\nUnlimited container can consume all host memory—kills other processes\nCopy limits to production config—don't discover limits in prod"
      },
      {
        "title": ".dockerignore",
        "body": "Without it: node_modules, .git, secrets copied into image\nMirrors .gitignore syntax—create at same level as Dockerfile\nLarge build context = slow builds, large images, potential security issues\nAt minimum: .git, node_modules, .env, *.log, build artifacts"
      },
      {
        "title": "Override File Pattern",
        "body": "docker-compose.yml: base config that works everywhere\ndocker-compose.override.yml: auto-loaded, development-specific (mounts, ports)\nProduction: docker compose -f docker-compose.yml -f docker-compose.prod.yml up\nKeep secrets and environment-specific config in override files, not base"
      },
      {
        "title": "Profiles for Optional Services",
        "body": "services:\n  mailhog:\n    profiles: [dev]\n\nServices with profiles don't start by default—cleaner docker compose up\nEnable with --profile dev\nUse for: test databases, debug tools, mock services, admin interfaces"
      },
      {
        "title": "Environment Variable Precedence",
        "body": "Shell environment (highest)\n.env file in compose directory\nenv_file: directive\nenvironment: in compose file (lowest for that var)\n\n.env must be exactly .env—.env.local not auto-loaded\nDebug with docker compose config—shows resolved values"
      }
    ],
    "body": "depends_on Ready Condition\ndepends_on: alone only waits for container start—service likely not ready yet\nAdd healthcheck + condition for actual readiness:\ndepends_on:\n  db:\n    condition: service_healthy\n\nWithout healthcheck defined on target service, service_healthy fails\nHealthcheck start_period\nhealthcheck:\n  test: [\"CMD\", \"pg_isready\"]\n  start_period: 30s\n\nstart_period: initial grace period—health failures don't count during this time\nSlow-starting services (databases, Java apps) need adequate start_period\nWithout it, container marked unhealthy before it finishes initializing\nVolume Destruction\ndocker compose down preserves volumes\ndocker compose down -v DELETES ALL VOLUMES—data loss\n-v often added by habit from tutorials—catastrophic in production\nNamed volumes survive down; anonymous volumes deleted on down\nResource Limits in Development\ndeploy:\n  resources:\n    limits:\n      memory: 512M\n\nSet limits during development—catches memory issues early\nUnlimited container can consume all host memory—kills other processes\nCopy limits to production config—don't discover limits in prod\n.dockerignore\nWithout it: node_modules, .git, secrets copied into image\nMirrors .gitignore syntax—create at same level as Dockerfile\nLarge build context = slow builds, large images, potential security issues\nAt minimum: .git, node_modules, .env, *.log, build artifacts\nOverride File Pattern\ndocker-compose.yml: base config that works everywhere\ndocker-compose.override.yml: auto-loaded, development-specific (mounts, ports)\nProduction: docker compose -f docker-compose.yml -f docker-compose.prod.yml up\nKeep secrets and environment-specific config in override files, not base\nProfiles for Optional Services\nservices:\n  mailhog:\n    profiles: [dev]\n\nServices with profiles don't start by default—cleaner docker compose up\nEnable with --profile dev\nUse for: test databases, debug tools, mock services, admin interfaces\nEnvironment Variable Precedence\nShell environment (highest)\n.env file in compose directory\nenv_file: directive\nenvironment: in compose file (lowest for that var)\n.env must be exactly .env—.env.local not auto-loaded\nDebug with docker compose config—shows resolved values"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/docker-compose",
    "publisherUrl": "https://clawhub.ai/ivangdavila/docker-compose",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/docker-compose",
    "downloadUrl": "https://openagent3.xyz/downloads/docker-compose",
    "agentUrl": "https://openagent3.xyz/skills/docker-compose/agent",
    "manifestUrl": "https://openagent3.xyz/skills/docker-compose/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/docker-compose/agent.md"
  }
}