You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/our-chosen-toolchain.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -91,7 +91,7 @@ Here is the breakdown of the chosen tool(s) for each defined area:
91
91
92
92
-**15: Container Orchestration (Local / Single Host):**
93
93
94
-
-**Chosen:** {docker}`Docker Compose<>`.
94
+
-**Chosen:** {docker-compose}`Docker Compose<>`.
95
95
-**Why:** The standard, intuitive tool for defining and running multi-container applications locally, seamlessly integrating with built container images for development and testing stacks. ([Details](topics/15_compose-local.md))
Copy file name to clipboardExpand all lines: docs/topics/11_container-build.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -74,6 +74,6 @@ By choosing this approach, the template provides a standard, flexible, robust, a
74
74
-**Dependency Management (02):** {uv}`uv<>` is the recommended tool for managing and installing dependencies _inside_ the Docker image.
75
75
-**Task Automation (12):** {nox}`Nox<>` sessions call the `docker build` or `podman build` command via `uv run` (or `session.run` directly for the `docker`/`podman` command itself, as it's external) to build the image.
76
76
-**CI Orchestration (13) & CD Orchestration (14):** Container image builds are often triggered in CI/CD pipelines via Task Automation. CD pipelines handle pushing the built images to container registries.
77
-
-**Container Orchestration (Local) (15):** The image built in this area is the base for defining multi-container setups locally using {docker}`docker-compose<>`.
77
+
-**Container Orchestration (Local) (15):** The image built in this area is the base for defining multi-container setups locally using {docker-compose}`docker-compose<>`.
78
78
-**Deployment to Production Orchestrators (16):** The image built here is the primary artifact deployed to production environments managed by tools like Kubernetes/{helm}`Helm<>`/{argocd}`Argo CD<>`.
79
79
-**Dev Containers (17):** The Dev Container often uses a similar or shared base image (or even the same `Dockerfile`) as the production image, leveraging common layers and consistency.
Copy file name to clipboardExpand all lines: docs/topics/15_compose-local.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,7 @@ This section evaluates tools used to define and run multi-container applications
25
25
26
26
## Tools and Approaches Evaluated
27
27
28
-
### Option 1: {docker}`Docker Compose<>`
28
+
### Option 1: {docker-compose}`Docker Compose<>`
29
29
30
30
-**Description:** A widely used tool for defining and running multi-container Docker applications. Configuration is done via a `compose.yaml` (or `docker-compose.yml`) file using YAML.
31
31
-**Evaluation:**
@@ -34,7 +34,7 @@ This section evaluates tools used to define and run multi-container applications
34
34
-**Service Orchestration:** Excellent. Core purpose is to define and orchestrate multiple interconnected services, setting up internal networks, defining volumes for data persistence, and managing dependencies/startup order. Provides commands (`up`, `down`, `start`, `stop`, `restart`, `logs`, `exec`).
35
35
-**Image Management:** Excellent. Can reference pre-built images from registries (`image: ...`) or build images locally based on a `Dockerfile` (`build: .` pointing to a directory containing a Dockerfile) – directly integrating with Topic 11's output.
36
36
-**Ease of Use (Development Workflow):** Excellent. Designed for developer productivity. Simple commands (`docker compose up`) start the entire defined application stack. Easy to stop the stack or view combined logs.
37
-
-**OS Interoperability:** Excellent. The {docker}`Docker Compose<>` CLI tool itself works reliably across Linux, macOS, and Windows. It interacts with the local {docker}`Docker<>` or {podman}`Podman<>` runtime, which are also cross-platform.
37
+
-**OS Interoperability:** Excellent. The {docker-compose}`Docker Compose<>` CLI tool itself works reliably across Linux, macOS, and Windows. It interacts with the local {docker}`Docker<>` or {podman}`Podman<>` runtime, which are also cross-platform.
38
38
-**Integration:** Excellent. Integrates directly with `Dockerfile`s (Topic 11). Commands are easily run from the terminal, within Dev Containers (Topic 17), or via Task Automation ({nox}`Nox<>`) if needed to control the multi-container setup. Can define health checks and dependencies for orchestration.
39
39
-**Maturity & Stability:** Very High. A mature, stable, widely used standard for local/single-host container orchestration. Recently transitioned from `docker-compose` (Python CLI) to `docker compose` (built into Docker CLI, Go implementation), but the configuration file format remains compatible.
40
40
-**Community & Documentation:** Very High. Large, active community, extensive documentation.
@@ -44,18 +44,18 @@ This section evaluates tools used to define and run multi-container applications
-**Description:** Tools used for orchestrating containers in production environments, primarily Kubernetes. (More aligned with Topic 16).
47
-
-**Evaluation:** These tools (Kubernetes, Helm, Argo CD, etc.) are designed for complex, distributed, production-grade orchestration, not the streamlined local multi-container development experience. Their configuration is typically more complex and their local developer workflows are often less seamless for simple start/stop/log tasks compared to {docker}`Docker Compose<>`. They are designed to consume images, not necessarily simplify the local build-and-run loop for multiple dependent services in development.
47
+
-**Evaluation:** These tools (Kubernetes, Helm, Argo CD, etc.) are designed for complex, distributed, production-grade orchestration, not the streamlined local multi-container development experience. Their configuration is typically more complex and their local developer workflows are often less seamless for simple start/stop/log tasks compared to {docker-compose}`Docker Compose<>`. They are designed to consume images, not necessarily simplify the local build-and-run loop for multiple dependent services in development.
48
48
-**Conclusion:** While crucial for production (Topic 16), they are not the appropriate tools for the local/single-host multi-container development workflow task defined in this area.
49
49
50
50
## Chosen Tool(s)
51
51
52
-
- Multi-container definition and orchestration: **{docker}`Docker Compose<>`** (using `compose.yaml` or `docker-compose.yml`).
52
+
- Multi-container definition and orchestration: **{docker-compose}`Docker Compose<>`** (using `compose.yaml` or `docker-compose.yml`).
53
53
54
54
## Justification for the Choice
55
55
56
-
**{docker}`Docker Compose<>`** is the definitive choice for defining and orchestrating multi-container applications in the context of this template's primary focus areas (local development, testing, simple single-host deployment) because it directly meets the needs of this specific layer:
56
+
**{docker-compose}`Docker Compose<>`** is the definitive choice for defining and orchestrating multi-container applications in the context of this template's primary focus areas (local development, testing, simple single-host deployment) because it directly meets the needs of this specific layer:
57
57
58
-
1.**Standard for Local Orchestration:** {docker}`Docker Compose<>` is the **widely accepted standard tool** for defining multi-service Docker applications using a simple, **standard YAML format** (`compose.yaml`/`docker-compose.yml`). This makes the configuration **understandable and maintainable**.
58
+
1.**Standard for Local Orchestration:** {docker-compose}`Docker Compose<>` is the **widely accepted standard tool** for defining multi-service Docker applications using a simple, **standard YAML format** (`compose.yaml`/`docker-compose.yml`). This makes the configuration **understandable and maintainable**.
59
59
2.**Excellent Local Development DX:** It provides **easy-to-use command-line interface** for controlling the entire application stack locally (`docker compose up`, `docker compose down`, `logs`, etc.). This directly supports the goal of facilitating local development workflows for multi-service applications (addressing **Ease of Use**).
60
60
3.**Seamless Dockerfile Integration:** It natively supports referencing pre-built images and, crucially, **building images directly from a `Dockerfile`** within the compose configuration. This creates a direct link to the container image building process defined in Topic 11.
61
61
4.**Robust and Cross-Platform:** The tool is **highly OS-interoperable**, running reliably on Linux, macOS, and Windows, requiring only the underlying Docker or Podman runtime to be present (addressing **OS Interoperability**).
@@ -67,5 +67,5 @@ By choosing {docker-compose}`Docker Compose<>`, the template provides a standard
67
67
## Interactions with Other Topics
68
68
69
69
-**Application Container Building (11):** {docker-compose}`Docker Compose<>` references the container images built in Area 11, often via a `build: .` directive pointing to the project's `Dockerfile` or via an `image:` reference to a registry.
70
-
-**Dev Containers (17):** Dev Containers might potentially use {docker}`Docker Compose<>` as their backing "dev container" when setting up a development environment that itself consists of multiple containers.
70
+
-**Dev Containers (17):** Dev Containers might potentially use {docker-compose}`Docker Compose<>` as their backing "dev container" when setting up a development environment that itself consists of multiple containers.
71
71
-**Deployment to Production Orchestrators (16):** While different tools are used, the _concepts_ defined in `compose.yaml` (services, networks, volumes) have analogies in production orchestrators. Users might transition from a local compose setup to production manifests.
Copy file name to clipboardExpand all lines: docs/topics/16_prod-deploy-guidance.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -52,15 +52,15 @@ We don't evaluate specific tools _for inclusion as configuration files in the te
52
52
## Chosen Approach
53
53
54
54
-**Focus on Artifact Readiness:** Ensure the template's workflows reliably build and publish **standard, consumable artifacts** (container images from Topic 11, Python packages from Topic 09) suitable as inputs for common production deployment tools.
55
-
-**Provide Documentation and Guidance:** Include clear documentation that acknowledges the external and complex nature of production deployment and guides users on how the template's outputs can be used with **common types of deployment tools and platforms**, mentioning examples like {docker}`Docker Compose<>` (Topic 15 for local context), Kubernetes orchestration (raw manifests, {helm}`Helm<>`), GitOps tools ({argocd}`Argo CD<>`), and serverless options. Do **NOT** include production deployment manifests or specific cloud configuration files within the template's core structure by default.
55
+
-**Provide Documentation and Guidance:** Include clear documentation that acknowledges the external and complex nature of production deployment and guides users on how the template's outputs can be used with **common types of deployment tools and platforms**, mentioning examples like {docker-compose}`Docker Compose<>` (Topic 15 for local context), Kubernetes orchestration (raw manifests, {helm}`Helm<>`), GitOps tools ({argocd}`Argo CD<>`), and serverless options. Do **NOT** include production deployment manifests or specific cloud configuration files within the template's core structure by default.
56
56
57
57
## Justification for the Choice
58
58
59
59
This approach provides maximum value to the user within the scope of a general Python project template while being realistic about the complexity of production deployment:
60
60
61
61
1.**Ensuring Compatibility:** By prioritizing the generation of **standard, high-quality build artifacts** (container images, packages) in Topics 09 and 11, the template fulfills the fundamental requirement that its outputs **CAN be consumed** by any standard production deployment method (addressing **Artifact Compatibility**). This is the template's core responsibility related to deployment readiness.
62
62
2.**Clear Scope Definition:** Explicitly stating that full production deployment configuration is complex and external to the template prevents users from expecting infrastructure-specific solutions within the base template. This sets realistic expectations (addressing **Scope Acknowledgment**). This aligns with **"Special cases should be allowed, but at their own expense"**, treating full infra config as a complex external special case.
63
-
3.**Empowering Users with Guidance:** Providing documentation that lists common types of deployment tools and platforms (Kubernetes, ECS, GKE, AKS, Lambda, Cloud Run, App Services, {helm}`Helm<>`, {argocd}`Argo CD<>`, {docker}`docker-compose<>` for local/simple reference) and explains how the template's standard outputs fit into these ecosystems gives users the knowledge to **choose and implement their specific deployment solution** (addressing **Guidance Quality** and **Relevance of Mentioned Tools**). It leverages the work done in Areas 09, 11, and 14.
63
+
3.**Empowering Users with Guidance:** Providing documentation that lists common types of deployment tools and platforms (Kubernetes, ECS, GKE, AKS, Lambda, Cloud Run, App Services, {helm}`Helm<>`, {argocd}`Argo CD<>`, {docker-compose}`docker-compose<>` for local/simple reference) and explains how the template's standard outputs fit into these ecosystems gives users the knowledge to **choose and implement their specific deployment solution** (addressing **Guidance Quality** and **Relevance of Mentioned Tools**). It leverages the work done in Areas 09, 11, and 14.
64
64
65
65
By focusing on producing consumable artifacts and providing helpful guidance on how to integrate them into the wider deployment landscape, the template ensures its outputs are production-ready inputs for whatever external infrastructure and orchestration layer the user chooses, without adding overly complex or highly context-specific configurations to the template's core.
66
66
@@ -69,4 +69,4 @@ By focusing on producing consumable artifacts and providing helpful guidance on
69
69
-**Packaging Build (09):** Produces Python packages (sdist/wheel) which can be deployment artifacts for serverless or other methods.
70
70
-**Application Container Building (11):** Produces container images, the most common deployment artifact for orchestrated environments.
71
71
-**Task Automation (12), CI Orchestration (13), CD Orchestration (14):** These workflows automate the creation and _potential_ publication of the artifacts needed for production deployment.
72
-
-**Container Orchestration (Local) (15):** While focused on local use, {docker}`docker-compose<>` concepts and tools serve as a stepping stone or simplified analogy for understanding multi-service orchestration concepts used in production platforms. It's a related tool category mentioned in guidance.
72
+
-**Container Orchestration (Local) (15):** While focused on local use, {docker-compose}`docker-compose<>` concepts and tools serve as a stepping stone or simplified analogy for understanding multi-service orchestration concepts used in production platforms. It's a related tool category mentioned in guidance.
Copy file name to clipboardExpand all lines: docs/workflow/index.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -47,7 +47,7 @@ Here's how the template facilitates your day-to-day coding work:
47
47
48
48
{nox}`Nox<>` handles running these tools within the correct, consistent environments using {uv}`uv run<>`.
49
49
50
-
4. **Local Container Development (Optional):** If your project involves multiple services or you prefer an encapsulated environment, use **Dev Containers** ([Containerized Development Environments (17)](../topics/17_dev-containers.md)) for a consistent development environment, and **{docker}`Docker Compose<>`** ([Container Orchestration (Local) (15)](../topics/15_compose-local.md)) to orchestrate local multi-service stacks.
50
+
4. **Local Container Development (Optional):** If your project involves multiple services or you prefer an encapsulated environment, use **Dev Containers** ([Containerized Development Environments (17)](../topics/17_dev-containers.md)) for a consistent development environment, and **{docker-compose}`Docker Compose<>`** ([Container Orchestration (Local) (15)](../topics/15_compose-local.md)) to orchestrate local multi-service stacks.
51
51
```bash
52
52
# From project root with Docker/Podman running:
53
53
# (Inside VS Code Dev Container or with compose installed)
0 commit comments