{
    "api_version": "1",
    "kind": "dse_post",
    "self": "https://update.dsesecurity.com/api/v1/posts/keep-component-path-context-explicit-with-compose-include/",
    "item": {
        "id": "https://update.dsesecurity.com/updates/keep-component-path-context-explicit-with-compose-include/",
        "slug": "keep-component-path-context-explicit-with-compose-include",
        "url": "https://update.dsesecurity.com/updates/keep-component-path-context-explicit-with-compose-include/",
        "alternate_urls": {
            "markdown": "https://update.dsesecurity.com/updates/keep-component-path-context-explicit-with-compose-include.md",
            "json": "https://update.dsesecurity.com/api/v1/posts/keep-component-path-context-explicit-with-compose-include/"
        },
        "title": "Keep component path context explicit with Compose include",
        "summary": "Compose include gives each component its own project directory for relative paths. Review that context and the override layer when assembling a modular application.",
        "format": {
            "slug": "guide",
            "name": "Guide"
        },
        "priority": {
            "slug": "advisory",
            "name": "Advisory"
        },
        "featured": false,
        "image": {
            "theme": "managed-it",
            "label": "Managed IT operations",
            "alt": "A controlled technology lifecycle progressing from assessment to approved production.",
            "card_url": "https://update.dsesecurity.com/assets/editorial/managed-it-card.webp?v=1.8.20",
            "hero_url": "https://update.dsesecurity.com/assets/editorial/managed-it-hero.webp?v=1.8.20",
            "social_url": "https://update.dsesecurity.com/assets/editorial/managed-it-social-v2.jpg?v=1.8.20",
            "width": 2400,
            "height": 1350
        },
        "topics": [
            {
                "slug": "it",
                "name": "IT",
                "url": "https://update.dsesecurity.com/topic/it/"
            }
        ],
        "author": {
            "name": "DSE Security Editorial Team",
            "url": "https://update.dsesecurity.com/#editorial-team",
            "type": "Organization"
        },
        "publisher": {
            "name": "Detection Systems & Engineering",
            "url": "https://dsesecurity.com/"
        },
        "published_at": "2026-10-29T00:09:45+00:00",
        "modified_at": "2026-10-29T00:10:35+00:00",
        "reviewed_on": "2026-10-28",
        "reading_minutes": 3,
        "word_count": 516,
        "potentially_affected": "Review scope: the documented include workflow requiring Docker Compose 2.20.3 or later; component trust and application compatibility remain separate decisions.",
        "dse_recommendation": "Map each included file to its own project directory and inspect the assembled model, with resource conflicts and intentional override layers identified.",
        "primary_source": {
            "name": "Docker Docs — Include",
            "url": "https://docs.docker.com/compose/how-tos/multiple-compose-files/include/",
            "published_on": null,
            "authority": "docs.docker.com"
        },
        "publishing_principles": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
        "usage_info": "https://update.dsesecurity.com/usage/",
        "copyright_notice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
        "content_html": "<p><strong>Bottom line:</strong> Review a component Compose file in the directory context that should interpret its paths. Keep that context visible when several teams assemble one application, and distinguish inclusion from an intentional override of the assembled model.</p>\n<h2>Source fact: documented behavior</h2>\n<p>The <a href=\"https://docs.docker.com/compose/how-tos/multiple-compose-files/include/\" target=\"_blank\" rel=\"noopener noreferrer\">Include</a> documentation is the primary reference.</p>\n<p>The <code>include</code> documentation requires Compose 2.20.3 or later and loads each included application with its own project directory for relative paths. Included resources are copied into the current application model, and <code>include</code> applies recursively. The guide distinguishes include resource-conflict errors from the separate global override that can adjust the resulting model.</p>\n<h2>What the source does not establish</h2>\n<p>This article concerns the documented include model and path context. It does not approve a remote component, make its application compatible or define every merge rule. Review source trust and requested customization independently. Do not treat a successful file load as acceptance of the resulting service configuration.</p>\n<h2>Applicability questions</h2>\n<ul>\n<li>Which included file and project directory own each relative path?</li>\n<li>Are further files included by a component itself?</li>\n<li>Which resource names could conflict when the models are assembled?</li>\n<li>Where is an intentional customization applied and reviewed?</li>\n</ul>\n<h2>DSE recommendation: map the component boundary before customization</h2>\n<p>DSE recommends a component map listing each included file, its responsible team and expected project directory. For every path important to the exercise, write the intended resolved file or directory beside the component entry. Use harmless lab paths in shared review examples.</p>\n<p>Inspect the inclusion chain as part of that map. Follow nested includes and identify the actual source revisions used by the assembled application. Keep an included building block separate from the main application&#8217;s choice to depend on it. A reviewer should be able to trace a resource to its component without searching several unrelated repositories.</p>\n<p>Make customizations explicit. Decide whether the documented dedicated override for an include or the global override layer expresses the intended change. Record that choice with the expected resulting resource. Investigate a resource-name conflict instead of solving it by renaming or duplicating definitions without a clear ownership decision.</p>\n<p>Check path context and changed values separately. Confirm the intended component files are used, then review the resulting service settings. Keep environment-precedence and exposed-port reviews distinct from this path-ownership question. Those checks may be required for the assembled application, but none should conceal which directory supplied a file.</p>\n<h2>Verification and evidence</h2>\n<p>Proposed verification, not performed: prepare two harmless component directories with distinct resource names and a recognizable local file in each. Assemble them through the documented include structure and inspect the model using the installed version&#8217;s documented workflow. Compare each important relative path with the component map.</p>\n<p>Use a separate deliberate resource-conflict case to examine error handling. Then test one explicitly reviewed customization through the chosen override layer, retaining the original component definition. Record the actual result of each case without reporting the proposed inputs as observations. Keep source revisions, include chain, directory map, selected override and assembled model together for another operator to reconstruct.</p>\n<h2>Official references</h2>\n<ul>\n<li><a href=\"https://docs.docker.com/compose/how-tos/multiple-compose-files/include/\" target=\"_blank\" rel=\"noopener noreferrer\">Include</a> — Docker Docs.</li>\n</ul>\n<p>Source review completed October 28, 2026. Recheck the official documentation and deployment-specific applicability before a production change.</p>\n",
        "content_text": "Bottom line: Review a component Compose file in the directory context that should interpret its paths. Keep that context visible when several teams assemble one application, and distinguish inclusion from an intentional override of the assembled model.\nSource fact: documented behavior\nThe Include documentation is the primary reference.\nThe include documentation requires Compose 2.20.3 or later and loads each included application with its own project directory for relative paths. Included resources are copied into the current application model, and include applies recursively. The guide distinguishes include resource-conflict errors from the separate global override that can adjust the resulting model.\nWhat the source does not establish\nThis article concerns the documented include model and path context. It does not approve a remote component, make its application compatible or define every merge rule. Review source trust and requested customization independently. Do not treat a successful file load as acceptance of the resulting service configuration.\nApplicability questions\n\nWhich included file and project directory own each relative path?\nAre further files included by a component itself?\nWhich resource names could conflict when the models are assembled?\nWhere is an intentional customization applied and reviewed?\n\nDSE recommendation: map the component boundary before customization\nDSE recommends a component map listing each included file, its responsible team and expected project directory. For every path important to the exercise, write the intended resolved file or directory beside the component entry. Use harmless lab paths in shared review examples.\nInspect the inclusion chain as part of that map. Follow nested includes and identify the actual source revisions used by the assembled application. Keep an included building block separate from the main application’s choice to depend on it. A reviewer should be able to trace a resource to its component without searching several unrelated repositories.\nMake customizations explicit. Decide whether the documented dedicated override for an include or the global override layer expresses the intended change. Record that choice with the expected resulting resource. Investigate a resource-name conflict instead of solving it by renaming or duplicating definitions without a clear ownership decision.\nCheck path context and changed values separately. Confirm the intended component files are used, then review the resulting service settings. Keep environment-precedence and exposed-port reviews distinct from this path-ownership question. Those checks may be required for the assembled application, but none should conceal which directory supplied a file.\nVerification and evidence\nProposed verification, not performed: prepare two harmless component directories with distinct resource names and a recognizable local file in each. Assemble them through the documented include structure and inspect the model using the installed version’s documented workflow. Compare each important relative path with the component map.\nUse a separate deliberate resource-conflict case to examine error handling. Then test one explicitly reviewed customization through the chosen override layer, retaining the original component definition. Record the actual result of each case without reporting the proposed inputs as observations. Keep source revisions, include chain, directory map, selected override and assembled model together for another operator to reconstruct.\nOfficial references\n\nInclude — Docker Docs.\n\nSource review completed October 28, 2026. Recheck the official documentation and deployment-specific applicability before a production change.",
        "content_markdown": "Bottom line: Review a component Compose file in the directory context that should interpret its paths. Keep that context visible when several teams assemble one application, and distinguish inclusion from an intentional override of the assembled model.\n\n## Source fact: documented behavior\n\nThe [Include](https://docs.docker.com/compose/how-tos/multiple-compose-files/include/) documentation is the primary reference.\n\nThe include documentation requires Compose 2.20.3 or later and loads each included application with its own project directory for relative paths. Included resources are copied into the current application model, and include applies recursively. The guide distinguishes include resource-conflict errors from the separate global override that can adjust the resulting model.\n\n## What the source does not establish\n\nThis article concerns the documented include model and path context. It does not approve a remote component, make its application compatible or define every merge rule. Review source trust and requested customization independently. Do not treat a successful file load as acceptance of the resulting service configuration.\n\n## Applicability questions\n\n- Which included file and project directory own each relative path?\n\n- Are further files included by a component itself?\n\n- Which resource names could conflict when the models are assembled?\n\n- Where is an intentional customization applied and reviewed?\n\n## DSE recommendation: map the component boundary before customization\n\nDSE recommends a component map listing each included file, its responsible team and expected project directory. For every path important to the exercise, write the intended resolved file or directory beside the component entry. Use harmless lab paths in shared review examples.\n\nInspect the inclusion chain as part of that map. Follow nested includes and identify the actual source revisions used by the assembled application. Keep an included building block separate from the main application’s choice to depend on it. A reviewer should be able to trace a resource to its component without searching several unrelated repositories.\n\nMake customizations explicit. Decide whether the documented dedicated override for an include or the global override layer expresses the intended change. Record that choice with the expected resulting resource. Investigate a resource-name conflict instead of solving it by renaming or duplicating definitions without a clear ownership decision.\n\nCheck path context and changed values separately. Confirm the intended component files are used, then review the resulting service settings. Keep environment-precedence and exposed-port reviews distinct from this path-ownership question. Those checks may be required for the assembled application, but none should conceal which directory supplied a file.\n\n## Verification and evidence\n\nProposed verification, not performed: prepare two harmless component directories with distinct resource names and a recognizable local file in each. Assemble them through the documented include structure and inspect the model using the installed version’s documented workflow. Compare each important relative path with the component map.\n\nUse a separate deliberate resource-conflict case to examine error handling. Then test one explicitly reviewed customization through the chosen override layer, retaining the original component definition. Record the actual result of each case without reporting the proposed inputs as observations. Keep source revisions, include chain, directory map, selected override and assembled model together for another operator to reconstruct.\n\n## Official references\n\n- [Include](https://docs.docker.com/compose/how-tos/multiple-compose-files/include/) — Docker Docs.\n\nSource review completed October 28, 2026. Recheck the official documentation and deployment-specific applicability before a production change."
    },
    "json_ld": {
        "@context": "https://schema.org",
        "@graph": [
            {
                "@type": "Organization",
                "@id": "https://dsesecurity.com/#organization",
                "name": "Detection Systems & Engineering",
                "alternateName": "DSE Security",
                "url": "https://dsesecurity.com/",
                "logo": {
                    "@type": "ImageObject",
                    "url": "https://update.dsesecurity.com/assets/dse-logo-20260812.png?v=1.8.20"
                }
            },
            {
                "@type": "Organization",
                "@id": "https://update.dsesecurity.com/#editorial-team",
                "name": "DSE Security Editorial Team",
                "url": "https://update.dsesecurity.com/",
                "parentOrganization": {
                    "@id": "https://dsesecurity.com/#organization"
                }
            },
            {
                "@type": "WebSite",
                "@id": "https://update.dsesecurity.com/#website",
                "name": "DSE Updates",
                "alternateName": "DSE Security Knowledge Hub",
                "url": "https://update.dsesecurity.com/",
                "inLanguage": "en-US",
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "potentialAction": {
                    "@type": "SearchAction",
                    "target": {
                        "@type": "EntryPoint",
                        "urlTemplate": "https://update.dsesecurity.com/?q={search_term_string}"
                    },
                    "query-input": "required name=search_term_string"
                }
            },
            {
                "@type": "WebPage",
                "@id": "https://update.dsesecurity.com/updates/keep-component-path-context-explicit-with-compose-include/",
                "url": "https://update.dsesecurity.com/updates/keep-component-path-context-explicit-with-compose-include/",
                "isPartOf": {
                    "@id": "https://update.dsesecurity.com/#website"
                },
                "lastReviewed": "2026-10-28"
            },
            {
                "@type": "BreadcrumbList",
                "@id": "https://update.dsesecurity.com/updates/keep-component-path-context-explicit-with-compose-include/#breadcrumbs",
                "itemListElement": [
                    {
                        "@type": "ListItem",
                        "position": 1,
                        "name": "DSE Updates",
                        "item": "https://update.dsesecurity.com/"
                    },
                    {
                        "@type": "ListItem",
                        "position": 2,
                        "name": "IT",
                        "item": "https://update.dsesecurity.com/topic/it/"
                    },
                    {
                        "@type": "ListItem",
                        "position": 3,
                        "name": "Keep component path context explicit with Compose include",
                        "item": "https://update.dsesecurity.com/updates/keep-component-path-context-explicit-with-compose-include/"
                    }
                ]
            },
            {
                "@type": [
                    "Article",
                    "TechArticle"
                ],
                "@id": "https://update.dsesecurity.com/updates/keep-component-path-context-explicit-with-compose-include/#article",
                "identifier": "https://update.dsesecurity.com/updates/keep-component-path-context-explicit-with-compose-include/",
                "url": "https://update.dsesecurity.com/updates/keep-component-path-context-explicit-with-compose-include/",
                "headline": "Keep component path context explicit with Compose include",
                "description": "Compose include gives each component its own project directory for relative paths.",
                "abstract": "Compose include gives each component its own project directory for relative paths. Review that context and the override layer when assembling a modular application.",
                "articleBody": "Bottom line: Review a component Compose file in the directory context that should interpret its paths. Keep that context visible when several teams assemble one application, and distinguish inclusion from an intentional override of the assembled model.\nSource fact: documented behavior\nThe Include documentation is the primary reference.\nThe include documentation requires Compose 2.20.3 or later and loads each included application with its own project directory for relative paths. Included resources are copied into the current application model, and include applies recursively. The guide distinguishes include resource-conflict errors from the separate global override that can adjust the resulting model.\nWhat the source does not establish\nThis article concerns the documented include model and path context. It does not approve a remote component, make its application compatible or define every merge rule. Review source trust and requested customization independently. Do not treat a successful file load as acceptance of the resulting service configuration.\nApplicability questions\n\nWhich included file and project directory own each relative path?\nAre further files included by a component itself?\nWhich resource names could conflict when the models are assembled?\nWhere is an intentional customization applied and reviewed?\n\nDSE recommendation: map the component boundary before customization\nDSE recommends a component map listing each included file, its responsible team and expected project directory. For every path important to the exercise, write the intended resolved file or directory beside the component entry. Use harmless lab paths in shared review examples.\nInspect the inclusion chain as part of that map. Follow nested includes and identify the actual source revisions used by the assembled application. Keep an included building block separate from the main application’s choice to depend on it. A reviewer should be able to trace a resource to its component without searching several unrelated repositories.\nMake customizations explicit. Decide whether the documented dedicated override for an include or the global override layer expresses the intended change. Record that choice with the expected resulting resource. Investigate a resource-name conflict instead of solving it by renaming or duplicating definitions without a clear ownership decision.\nCheck path context and changed values separately. Confirm the intended component files are used, then review the resulting service settings. Keep environment-precedence and exposed-port reviews distinct from this path-ownership question. Those checks may be required for the assembled application, but none should conceal which directory supplied a file.\nVerification and evidence\nProposed verification, not performed: prepare two harmless component directories with distinct resource names and a recognizable local file in each. Assemble them through the documented include structure and inspect the model using the installed version’s documented workflow. Compare each important relative path with the component map.\nUse a separate deliberate resource-conflict case to examine error handling. Then test one explicitly reviewed customization through the chosen override layer, retaining the original component definition. Record the actual result of each case without reporting the proposed inputs as observations. Keep source revisions, include chain, directory map, selected override and assembled model together for another operator to reconstruct.\nOfficial references\n\nInclude — Docker Docs.\n\nSource review completed October 28, 2026. Recheck the official documentation and deployment-specific applicability before a production change.",
                "datePublished": "2026-10-29T00:09:45+00:00",
                "dateModified": "2026-10-29T00:10:35+00:00",
                "mainEntityOfPage": {
                    "@id": "https://update.dsesecurity.com/updates/keep-component-path-context-explicit-with-compose-include/"
                },
                "inLanguage": "en-US",
                "isAccessibleForFree": true,
                "author": {
                    "@type": "Organization",
                    "name": "DSE Security Editorial Team",
                    "url": "https://update.dsesecurity.com/#editorial-team"
                },
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "image": {
                    "@type": "ImageObject",
                    "@id": "https://update.dsesecurity.com/updates/keep-component-path-context-explicit-with-compose-include/#primaryimage",
                    "url": "https://update.dsesecurity.com/assets/editorial/managed-it-social-v2.jpg?v=1.8.20",
                    "contentUrl": "https://update.dsesecurity.com/assets/editorial/managed-it-social-v2.jpg?v=1.8.20",
                    "width": 1200,
                    "height": 630,
                    "caption": "Keep component path context explicit with Compose include"
                },
                "articleSection": [
                    "IT"
                ],
                "keywords": [
                    "IT",
                    "Guide",
                    "Advisory priority"
                ],
                "genre": "Guide",
                "about": [
                    {
                        "@type": "Thing",
                        "name": "IT",
                        "url": "https://update.dsesecurity.com/topic/it/"
                    }
                ],
                "wordCount": 516,
                "timeRequired": "PT3M",
                "publishingPrinciples": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
                "usageInfo": "https://update.dsesecurity.com/usage/",
                "copyrightHolder": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "copyrightNotice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
                "citation": {
                    "@type": "CreativeWork",
                    "name": "Docker Docs — Include",
                    "url": "https://docs.docker.com/compose/how-tos/multiple-compose-files/include/"
                }
            }
        ]
    }
}