oh-my-customcode 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/README.md +45 -32
  2. package/dist/cli/index.js +12 -20
  3. package/dist/index.js +3 -3
  4. package/package.json +2 -2
  5. package/templates/.claude/rules/MUST-orchestrator-coordination.md +25 -0
  6. package/templates/agents/index.yaml +6 -0
  7. package/templates/agents/infra-engineer/aws-expert/refs/aws/common-patterns.md +169 -0
  8. package/templates/agents/infra-engineer/aws-expert/refs/aws/index.yaml +26 -0
  9. package/templates/agents/infra-engineer/aws-expert/refs/aws/well-architected.md +143 -0
  10. package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/SKILL.md +279 -0
  11. package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/index.yaml +27 -0
  12. package/templates/agents/infra-engineer/docker-expert/refs/docker/compose-best-practices.md +284 -0
  13. package/templates/agents/infra-engineer/docker-expert/refs/docker/dockerfile-best-practices.md +262 -0
  14. package/templates/agents/infra-engineer/docker-expert/refs/docker/index.yaml +26 -0
  15. package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/SKILL.md +274 -0
  16. package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/index.yaml +26 -0
  17. package/templates/agents/manager/creator/refs/rules/MAY-optimization.md +93 -0
  18. package/templates/agents/manager/creator/refs/rules/MUST-agent-design.md +107 -0
  19. package/templates/agents/manager/creator/refs/rules/MUST-agent-identification.md +108 -0
  20. package/templates/agents/manager/creator/refs/rules/MUST-continuous-improvement.md +132 -0
  21. package/templates/agents/manager/creator/refs/rules/MUST-intent-transparency.md +199 -0
  22. package/templates/agents/manager/creator/refs/rules/MUST-language-policy.md +62 -0
  23. package/templates/agents/manager/creator/refs/rules/MUST-orchestrator-coordination.md +291 -0
  24. package/templates/agents/manager/creator/refs/rules/MUST-parallel-execution.md +341 -0
  25. package/templates/agents/manager/creator/refs/rules/MUST-permissions.md +84 -0
  26. package/templates/agents/manager/creator/refs/rules/MUST-safety.md +69 -0
  27. package/templates/agents/manager/creator/refs/rules/MUST-sync-verification.md +219 -0
  28. package/templates/agents/manager/creator/refs/rules/MUST-tool-identification.md +112 -0
  29. package/templates/agents/manager/creator/refs/rules/SHOULD-ecomode.md +145 -0
  30. package/templates/agents/manager/creator/refs/rules/SHOULD-error-handling.md +102 -0
  31. package/templates/agents/manager/creator/refs/rules/SHOULD-hud-statusline.md +89 -0
  32. package/templates/agents/manager/creator/refs/rules/SHOULD-interaction.md +103 -0
  33. package/templates/agents/manager/creator/refs/rules/SHOULD-memory-integration.md +114 -0
  34. package/templates/agents/manager/creator/refs/rules/SHOULD-pipeline-mode.md +165 -0
  35. package/templates/agents/manager/creator/refs/rules/index.yaml +125 -0
  36. package/templates/agents/manager/supplier/refs/guides/aws/common-patterns.md +169 -0
  37. package/templates/agents/manager/supplier/refs/guides/aws/index.yaml +26 -0
  38. package/templates/agents/manager/supplier/refs/guides/aws/well-architected.md +143 -0
  39. package/templates/agents/manager/supplier/refs/guides/claude-code/01-overview.md +42 -0
  40. package/templates/agents/manager/supplier/refs/guides/claude-code/03-tools.md +107 -0
  41. package/templates/agents/manager/supplier/refs/guides/claude-code/04-agent-skills.md +90 -0
  42. package/templates/agents/manager/supplier/refs/guides/claude-code/05-agent-sdk.md +129 -0
  43. package/templates/agents/manager/supplier/refs/guides/claude-code/06-mcp.md +165 -0
  44. package/templates/agents/manager/supplier/refs/guides/claude-code/07-prompt-engineering.md +100 -0
  45. package/templates/agents/manager/supplier/refs/guides/claude-code/08-testing.md +58 -0
  46. package/templates/agents/manager/supplier/refs/guides/claude-code/09-guardrails.md +80 -0
  47. package/templates/agents/manager/supplier/refs/guides/claude-code/10-monitoring.md +89 -0
  48. package/templates/agents/manager/supplier/refs/guides/claude-code/index.yaml +51 -0
  49. package/templates/agents/manager/supplier/refs/guides/docker/compose-best-practices.md +284 -0
  50. package/templates/agents/manager/supplier/refs/guides/docker/dockerfile-best-practices.md +262 -0
  51. package/templates/agents/manager/supplier/refs/guides/docker/index.yaml +26 -0
  52. package/templates/agents/manager/supplier/refs/guides/fastapi/best-practices.md +232 -0
  53. package/templates/agents/manager/supplier/refs/guides/fastapi/index.yaml +21 -0
  54. package/templates/agents/manager/supplier/refs/guides/go-backend/index.yaml +26 -0
  55. package/templates/agents/manager/supplier/refs/guides/go-backend/project-layout.md +243 -0
  56. package/templates/agents/manager/supplier/refs/guides/go-backend/uber-style.md +212 -0
  57. package/templates/agents/manager/supplier/refs/guides/golang/concurrency.md +282 -0
  58. package/templates/agents/manager/supplier/refs/guides/golang/effective-go.md +309 -0
  59. package/templates/agents/manager/supplier/refs/guides/golang/error-handling.md +250 -0
  60. package/templates/agents/manager/supplier/refs/guides/golang/index.yaml +27 -0
  61. package/templates/agents/manager/supplier/refs/guides/index.yaml +101 -0
  62. package/templates/agents/manager/supplier/refs/guides/kotlin/coding-conventions.md +247 -0
  63. package/templates/agents/manager/supplier/refs/guides/kotlin/idioms.md +234 -0
  64. package/templates/agents/manager/supplier/refs/guides/kotlin/index.yaml +26 -0
  65. package/templates/agents/manager/supplier/refs/guides/python/index.yaml +26 -0
  66. package/templates/agents/manager/supplier/refs/guides/python/pep8-style-guide.md +202 -0
  67. package/templates/agents/manager/supplier/refs/guides/python/zen-of-python.md +79 -0
  68. package/templates/agents/manager/supplier/refs/guides/rust/error-handling.md +262 -0
  69. package/templates/agents/manager/supplier/refs/guides/rust/index.yaml +26 -0
  70. package/templates/agents/manager/supplier/refs/guides/rust/ownership.md +180 -0
  71. package/templates/agents/manager/supplier/refs/guides/springboot/best-practices.md +361 -0
  72. package/templates/agents/manager/supplier/refs/guides/springboot/index.yaml +22 -0
  73. package/templates/agents/manager/supplier/refs/guides/typescript/advanced-types.md +225 -0
  74. package/templates/agents/manager/supplier/refs/guides/typescript/index.yaml +26 -0
  75. package/templates/agents/manager/supplier/refs/guides/typescript/type-system.md +219 -0
  76. package/templates/agents/manager/supplier/refs/guides/web-design/accessibility.md +66 -0
  77. package/templates/agents/manager/supplier/refs/guides/web-design/index.yaml +20 -0
  78. package/templates/agents/manager/supplier/refs/guides/web-design/performance.md +102 -0
  79. package/templates/agents/manager/supplier/refs/rules/MAY-optimization.md +93 -0
  80. package/templates/agents/manager/supplier/refs/rules/MUST-agent-design.md +107 -0
  81. package/templates/agents/manager/supplier/refs/rules/MUST-agent-identification.md +108 -0
  82. package/templates/agents/manager/supplier/refs/rules/MUST-continuous-improvement.md +132 -0
  83. package/templates/agents/manager/supplier/refs/rules/MUST-intent-transparency.md +199 -0
  84. package/templates/agents/manager/supplier/refs/rules/MUST-language-policy.md +62 -0
  85. package/templates/agents/manager/supplier/refs/rules/MUST-orchestrator-coordination.md +291 -0
  86. package/templates/agents/manager/supplier/refs/rules/MUST-parallel-execution.md +341 -0
  87. package/templates/agents/manager/supplier/refs/rules/MUST-permissions.md +84 -0
  88. package/templates/agents/manager/supplier/refs/rules/MUST-safety.md +69 -0
  89. package/templates/agents/manager/supplier/refs/rules/MUST-sync-verification.md +219 -0
  90. package/templates/agents/manager/supplier/refs/rules/MUST-tool-identification.md +112 -0
  91. package/templates/agents/manager/supplier/refs/rules/SHOULD-ecomode.md +145 -0
  92. package/templates/agents/manager/supplier/refs/rules/SHOULD-error-handling.md +102 -0
  93. package/templates/agents/manager/supplier/refs/rules/SHOULD-hud-statusline.md +89 -0
  94. package/templates/agents/manager/supplier/refs/rules/SHOULD-interaction.md +103 -0
  95. package/templates/agents/manager/supplier/refs/rules/SHOULD-memory-integration.md +114 -0
  96. package/templates/agents/manager/supplier/refs/rules/SHOULD-pipeline-mode.md +165 -0
  97. package/templates/agents/manager/supplier/refs/rules/index.yaml +125 -0
  98. package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/SKILL.md +269 -0
  99. package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/index.yaml +25 -0
  100. package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/SKILL.md +337 -0
  101. package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/index.yaml +26 -0
  102. package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/SKILL.md +356 -0
  103. package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/index.yaml +27 -0
  104. package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/SKILL.md +202 -0
  105. package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/index.yaml +25 -0
  106. package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/SKILL.md +255 -0
  107. package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/index.yaml +27 -0
  108. package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/SKILL.md +221 -0
  109. package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/index.yaml +25 -0
  110. package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/SKILL.md +100 -0
  111. package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/index.yaml +39 -0
  112. package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/SKILL.md +266 -0
  113. package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/index.yaml +26 -0
  114. package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/SKILL.md +320 -0
  115. package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/index.yaml +28 -0
  116. package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/SKILL.md +73 -0
  117. package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/index.yaml +30 -0
  118. package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/SKILL.md +117 -0
  119. package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/index.yaml +34 -0
  120. package/templates/agents/manager/supplier/refs/skills/index.yaml +129 -0
  121. package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/SKILL.md +279 -0
  122. package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/index.yaml +27 -0
  123. package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/SKILL.md +274 -0
  124. package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/index.yaml +26 -0
  125. package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/SKILL.md +214 -0
  126. package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/index.yaml +30 -0
  127. package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +342 -0
  128. package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/SKILL.md +188 -0
  129. package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/index.yaml +27 -0
  130. package/templates/agents/manager/supplier/refs/skills/system/memory-management/SKILL.md +194 -0
  131. package/templates/agents/manager/supplier/refs/skills/system/memory-management/index.yaml +30 -0
  132. package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/SKILL.md +163 -0
  133. package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/index.yaml +36 -0
  134. package/templates/agents/manager/updater/refs/rules/MAY-optimization.md +93 -0
  135. package/templates/agents/manager/updater/refs/rules/MUST-agent-design.md +107 -0
  136. package/templates/agents/manager/updater/refs/rules/MUST-agent-identification.md +108 -0
  137. package/templates/agents/manager/updater/refs/rules/MUST-continuous-improvement.md +132 -0
  138. package/templates/agents/manager/updater/refs/rules/MUST-intent-transparency.md +199 -0
  139. package/templates/agents/manager/updater/refs/rules/MUST-language-policy.md +62 -0
  140. package/templates/agents/manager/updater/refs/rules/MUST-orchestrator-coordination.md +291 -0
  141. package/templates/agents/manager/updater/refs/rules/MUST-parallel-execution.md +341 -0
  142. package/templates/agents/manager/updater/refs/rules/MUST-permissions.md +84 -0
  143. package/templates/agents/manager/updater/refs/rules/MUST-safety.md +69 -0
  144. package/templates/agents/manager/updater/refs/rules/MUST-sync-verification.md +219 -0
  145. package/templates/agents/manager/updater/refs/rules/MUST-tool-identification.md +112 -0
  146. package/templates/agents/manager/updater/refs/rules/SHOULD-ecomode.md +145 -0
  147. package/templates/agents/manager/updater/refs/rules/SHOULD-error-handling.md +102 -0
  148. package/templates/agents/manager/updater/refs/rules/SHOULD-hud-statusline.md +89 -0
  149. package/templates/agents/manager/updater/refs/rules/SHOULD-interaction.md +103 -0
  150. package/templates/agents/manager/updater/refs/rules/SHOULD-memory-integration.md +114 -0
  151. package/templates/agents/manager/updater/refs/rules/SHOULD-pipeline-mode.md +165 -0
  152. package/templates/agents/manager/updater/refs/rules/index.yaml +125 -0
  153. package/templates/agents/orchestrator/secretary/refs/rules/MAY-optimization.md +93 -0
  154. package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-design.md +107 -0
  155. package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-identification.md +108 -0
  156. package/templates/agents/orchestrator/secretary/refs/rules/MUST-continuous-improvement.md +132 -0
  157. package/templates/agents/orchestrator/secretary/refs/rules/MUST-intent-transparency.md +199 -0
  158. package/templates/agents/orchestrator/secretary/refs/rules/MUST-language-policy.md +62 -0
  159. package/templates/agents/orchestrator/secretary/refs/rules/MUST-orchestrator-coordination.md +291 -0
  160. package/templates/agents/orchestrator/secretary/refs/rules/MUST-parallel-execution.md +341 -0
  161. package/templates/agents/orchestrator/secretary/refs/rules/MUST-permissions.md +84 -0
  162. package/templates/agents/orchestrator/secretary/refs/rules/MUST-safety.md +69 -0
  163. package/templates/agents/orchestrator/secretary/refs/rules/MUST-sync-verification.md +219 -0
  164. package/templates/agents/orchestrator/secretary/refs/rules/MUST-tool-identification.md +112 -0
  165. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-ecomode.md +145 -0
  166. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-error-handling.md +102 -0
  167. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-hud-statusline.md +89 -0
  168. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-interaction.md +103 -0
  169. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-memory-integration.md +114 -0
  170. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-pipeline-mode.md +165 -0
  171. package/templates/agents/orchestrator/secretary/refs/rules/index.yaml +125 -0
  172. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/best-practices.md +232 -0
  173. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/index.yaml +21 -0
  174. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/SKILL.md +269 -0
  175. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/index.yaml +25 -0
  176. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/index.yaml +26 -0
  177. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/project-layout.md +243 -0
  178. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/uber-style.md +212 -0
  179. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/SKILL.md +337 -0
  180. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/index.yaml +26 -0
  181. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/best-practices.md +361 -0
  182. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/index.yaml +22 -0
  183. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/SKILL.md +356 -0
  184. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/index.yaml +27 -0
  185. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/SKILL.md +100 -0
  186. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/index.yaml +39 -0
  187. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/SKILL.md +73 -0
  188. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/index.yaml +30 -0
  189. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/accessibility.md +66 -0
  190. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/index.yaml +20 -0
  191. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/performance.md +102 -0
  192. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/SKILL.md +117 -0
  193. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/index.yaml +34 -0
  194. package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/SKILL.md +202 -0
  195. package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/index.yaml +25 -0
  196. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/concurrency.md +282 -0
  197. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/effective-go.md +309 -0
  198. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/error-handling.md +250 -0
  199. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/index.yaml +27 -0
  200. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/coding-conventions.md +247 -0
  201. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/idioms.md +234 -0
  202. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/index.yaml +26 -0
  203. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/SKILL.md +255 -0
  204. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/index.yaml +27 -0
  205. package/templates/agents/sw-engineer/language/python-expert/refs/python/index.yaml +26 -0
  206. package/templates/agents/sw-engineer/language/python-expert/refs/python/pep8-style-guide.md +202 -0
  207. package/templates/agents/sw-engineer/language/python-expert/refs/python/zen-of-python.md +79 -0
  208. package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/SKILL.md +221 -0
  209. package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/index.yaml +25 -0
  210. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/error-handling.md +262 -0
  211. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/index.yaml +26 -0
  212. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/ownership.md +180 -0
  213. package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/SKILL.md +266 -0
  214. package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/index.yaml +26 -0
  215. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/advanced-types.md +225 -0
  216. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/index.yaml +26 -0
  217. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/type-system.md +219 -0
  218. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/SKILL.md +320 -0
  219. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/index.yaml +28 -0
  220. package/templates/agents/tutor/go-tutor/AGENT.md +130 -0
  221. package/templates/agents/tutor/go-tutor/index.yaml +48 -0
  222. package/templates/manifest.json +55 -0
  223. package/templates/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +9 -0
@@ -0,0 +1,284 @@
1
+ # Docker Compose Best Practices
2
+
3
+ > Source: https://docs.docker.com/compose/compose-file/best-practices/
4
+
5
+ ## File Structure
6
+
7
+ ```yaml
8
+ version: "3.8"
9
+
10
+ services:
11
+ # Application services
12
+ app:
13
+ ...
14
+
15
+ # Infrastructure services
16
+ db:
17
+ ...
18
+
19
+ volumes:
20
+ # Named volumes
21
+
22
+ networks:
23
+ # Custom networks
24
+ ```
25
+
26
+ ## Service Configuration
27
+
28
+ ### Build Configuration
29
+
30
+ ```yaml
31
+ services:
32
+ app:
33
+ build:
34
+ context: .
35
+ dockerfile: Dockerfile
36
+ target: production
37
+ args:
38
+ - NODE_ENV=production
39
+ ```
40
+
41
+ ### Environment Variables
42
+
43
+ ```yaml
44
+ services:
45
+ app:
46
+ # From file
47
+ env_file:
48
+ - .env
49
+ - .env.local
50
+
51
+ # Inline
52
+ environment:
53
+ - DATABASE_URL=${DATABASE_URL}
54
+ - NODE_ENV=production
55
+ ```
56
+
57
+ ### Dependencies
58
+
59
+ ```yaml
60
+ services:
61
+ app:
62
+ depends_on:
63
+ db:
64
+ condition: service_healthy
65
+ redis:
66
+ condition: service_started
67
+ ```
68
+
69
+ ### Health Checks
70
+
71
+ ```yaml
72
+ services:
73
+ db:
74
+ image: postgres:16
75
+ healthcheck:
76
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
77
+ interval: 10s
78
+ timeout: 5s
79
+ retries: 5
80
+ start_period: 30s
81
+ ```
82
+
83
+ ### Resource Limits
84
+
85
+ ```yaml
86
+ services:
87
+ app:
88
+ deploy:
89
+ resources:
90
+ limits:
91
+ cpus: "1"
92
+ memory: 512M
93
+ reservations:
94
+ cpus: "0.5"
95
+ memory: 256M
96
+ ```
97
+
98
+ ## Volumes
99
+
100
+ ### Named Volumes
101
+
102
+ ```yaml
103
+ services:
104
+ db:
105
+ volumes:
106
+ - postgres_data:/var/lib/postgresql/data
107
+
108
+ volumes:
109
+ postgres_data:
110
+ driver: local
111
+ ```
112
+
113
+ ### Bind Mounts (Development)
114
+
115
+ ```yaml
116
+ services:
117
+ app:
118
+ volumes:
119
+ - ./src:/app/src:ro
120
+ - ./config:/app/config:ro
121
+ ```
122
+
123
+ ## Networks
124
+
125
+ ### Custom Networks
126
+
127
+ ```yaml
128
+ services:
129
+ app:
130
+ networks:
131
+ - frontend
132
+ - backend
133
+
134
+ db:
135
+ networks:
136
+ - backend
137
+
138
+ networks:
139
+ frontend:
140
+ backend:
141
+ internal: true
142
+ ```
143
+
144
+ ## Multiple Environments
145
+
146
+ ### Override Files
147
+
148
+ ```bash
149
+ # Base configuration
150
+ docker-compose.yml
151
+
152
+ # Development overrides
153
+ docker-compose.override.yml
154
+
155
+ # Production overrides
156
+ docker-compose.prod.yml
157
+
158
+ # Usage
159
+ docker compose -f docker-compose.yml -f docker-compose.prod.yml up
160
+ ```
161
+
162
+ ### Example: Production
163
+
164
+ ```yaml
165
+ # docker-compose.prod.yml
166
+ services:
167
+ app:
168
+ build:
169
+ target: production
170
+ restart: always
171
+ deploy:
172
+ replicas: 3
173
+ resources:
174
+ limits:
175
+ cpus: "1"
176
+ memory: 1G
177
+
178
+ db:
179
+ restart: always
180
+ volumes:
181
+ - /mnt/data/postgres:/var/lib/postgresql/data
182
+ ```
183
+
184
+ ### Example: Development
185
+
186
+ ```yaml
187
+ # docker-compose.override.yml
188
+ services:
189
+ app:
190
+ build:
191
+ target: development
192
+ volumes:
193
+ - ./src:/app/src
194
+ environment:
195
+ - DEBUG=true
196
+ ports:
197
+ - "3000:3000"
198
+ - "9229:9229" # debugger
199
+ ```
200
+
201
+ ## Complete Example
202
+
203
+ ```yaml
204
+ version: "3.8"
205
+
206
+ services:
207
+ app:
208
+ build:
209
+ context: .
210
+ target: production
211
+ restart: unless-stopped
212
+ environment:
213
+ - DATABASE_URL=postgresql://user:pass@db:5432/myapp
214
+ - REDIS_URL=redis://redis:6379
215
+ ports:
216
+ - "8080:8080"
217
+ depends_on:
218
+ db:
219
+ condition: service_healthy
220
+ redis:
221
+ condition: service_started
222
+ healthcheck:
223
+ test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
224
+ interval: 30s
225
+ timeout: 10s
226
+ retries: 3
227
+ deploy:
228
+ resources:
229
+ limits:
230
+ cpus: "2"
231
+ memory: 1G
232
+ networks:
233
+ - frontend
234
+ - backend
235
+
236
+ db:
237
+ image: postgres:16-alpine
238
+ restart: unless-stopped
239
+ environment:
240
+ - POSTGRES_USER=user
241
+ - POSTGRES_PASSWORD=pass
242
+ - POSTGRES_DB=myapp
243
+ volumes:
244
+ - postgres_data:/var/lib/postgresql/data
245
+ healthcheck:
246
+ test: ["CMD-SHELL", "pg_isready -U user -d myapp"]
247
+ interval: 10s
248
+ timeout: 5s
249
+ retries: 5
250
+ networks:
251
+ - backend
252
+
253
+ redis:
254
+ image: redis:7-alpine
255
+ restart: unless-stopped
256
+ command: redis-server --appendonly yes
257
+ volumes:
258
+ - redis_data:/data
259
+ networks:
260
+ - backend
261
+
262
+ nginx:
263
+ image: nginx:1.25-alpine
264
+ restart: unless-stopped
265
+ ports:
266
+ - "80:80"
267
+ - "443:443"
268
+ volumes:
269
+ - ./nginx.conf:/etc/nginx/nginx.conf:ro
270
+ - ./certs:/etc/nginx/certs:ro
271
+ depends_on:
272
+ - app
273
+ networks:
274
+ - frontend
275
+
276
+ volumes:
277
+ postgres_data:
278
+ redis_data:
279
+
280
+ networks:
281
+ frontend:
282
+ backend:
283
+ internal: true
284
+ ```
@@ -0,0 +1,262 @@
1
+ # Dockerfile Best Practices
2
+
3
+ > Source: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
4
+
5
+ ## General Guidelines
6
+
7
+ ### Create Ephemeral Containers
8
+
9
+ Containers should be ephemeral - can be stopped, destroyed, and rebuilt with minimal setup.
10
+
11
+ ### Understand Build Context
12
+
13
+ ```bash
14
+ # Entire directory sent to daemon
15
+ docker build .
16
+
17
+ # Use .dockerignore to exclude files
18
+ # .dockerignore
19
+ .git
20
+ node_modules
21
+ *.md
22
+ ```
23
+
24
+ ### Use Multi-Stage Builds
25
+
26
+ ```dockerfile
27
+ # Build stage
28
+ FROM golang:1.21 AS builder
29
+ WORKDIR /app
30
+ COPY . .
31
+ RUN go build -o myapp
32
+
33
+ # Runtime stage
34
+ FROM alpine:3.19
35
+ COPY --from=builder /app/myapp /usr/local/bin/
36
+ CMD ["myapp"]
37
+ ```
38
+
39
+ ## Dockerfile Instructions
40
+
41
+ ### FROM
42
+
43
+ ```dockerfile
44
+ # Pin versions
45
+ FROM ubuntu:22.04
46
+
47
+ # Use digest for reproducibility
48
+ FROM node:20@sha256:abc123...
49
+
50
+ # Use official images
51
+ FROM python:3.12-slim
52
+ ```
53
+
54
+ ### RUN
55
+
56
+ ```dockerfile
57
+ # Combine commands
58
+ RUN apt-get update && apt-get install -y \
59
+ curl \
60
+ git \
61
+ && rm -rf /var/lib/apt/lists/*
62
+
63
+ # Use BuildKit cache
64
+ RUN --mount=type=cache,target=/root/.cache/pip \
65
+ pip install -r requirements.txt
66
+ ```
67
+
68
+ ### CMD vs ENTRYPOINT
69
+
70
+ ```dockerfile
71
+ # CMD: Default command (can be overridden)
72
+ CMD ["python", "app.py"]
73
+
74
+ # ENTRYPOINT: Fixed command
75
+ ENTRYPOINT ["python"]
76
+ CMD ["app.py"]
77
+
78
+ # Combined
79
+ ENTRYPOINT ["/docker-entrypoint.sh"]
80
+ CMD ["postgres"]
81
+ ```
82
+
83
+ ### COPY vs ADD
84
+
85
+ ```dockerfile
86
+ # Prefer COPY (more explicit)
87
+ COPY requirements.txt .
88
+
89
+ # ADD only for tar extraction or URLs
90
+ ADD archive.tar.gz /app/
91
+ ```
92
+
93
+ ### EXPOSE
94
+
95
+ ```dockerfile
96
+ # Documentation only
97
+ EXPOSE 8080
98
+ EXPOSE 443/tcp
99
+ ```
100
+
101
+ ### ENV
102
+
103
+ ```dockerfile
104
+ ENV APP_HOME=/app \
105
+ PATH=$APP_HOME/bin:$PATH
106
+
107
+ WORKDIR $APP_HOME
108
+ ```
109
+
110
+ ### VOLUME
111
+
112
+ ```dockerfile
113
+ # Named mount point
114
+ VOLUME /data
115
+ ```
116
+
117
+ ### USER
118
+
119
+ ```dockerfile
120
+ # Create non-root user
121
+ RUN groupadd -r app && useradd -r -g app app
122
+ USER app
123
+
124
+ # Or use existing
125
+ USER nobody
126
+ ```
127
+
128
+ ### WORKDIR
129
+
130
+ ```dockerfile
131
+ # Always use absolute paths
132
+ WORKDIR /app
133
+ WORKDIR /app/src
134
+ ```
135
+
136
+ ### HEALTHCHECK
137
+
138
+ ```dockerfile
139
+ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
140
+ CMD curl -f http://localhost/ || exit 1
141
+ ```
142
+
143
+ ## Layer Optimization
144
+
145
+ ### Order Matters
146
+
147
+ ```dockerfile
148
+ # 1. Install dependencies (changes rarely)
149
+ COPY package.json package-lock.json ./
150
+ RUN npm ci
151
+
152
+ # 2. Copy source (changes often)
153
+ COPY . .
154
+
155
+ # 3. Build
156
+ RUN npm run build
157
+ ```
158
+
159
+ ### Combine RUN Commands
160
+
161
+ ```dockerfile
162
+ # Good: Single layer
163
+ RUN apt-get update && \
164
+ apt-get install -y python3 && \
165
+ rm -rf /var/lib/apt/lists/*
166
+
167
+ # Bad: Multiple layers
168
+ RUN apt-get update
169
+ RUN apt-get install -y python3
170
+ RUN rm -rf /var/lib/apt/lists/*
171
+ ```
172
+
173
+ ## Security Best Practices
174
+
175
+ ### Don't Run as Root
176
+
177
+ ```dockerfile
178
+ FROM node:20
179
+
180
+ RUN groupadd -r nodejs && useradd -r -g nodejs nodejs
181
+ USER nodejs
182
+
183
+ COPY --chown=nodejs:nodejs . .
184
+ ```
185
+
186
+ ### Don't Store Secrets
187
+
188
+ ```dockerfile
189
+ # Bad: Secret in image
190
+ ENV API_KEY=secret123
191
+
192
+ # Good: Pass at runtime
193
+ # docker run -e API_KEY=secret123 myapp
194
+ ```
195
+
196
+ ### Use Official Images
197
+
198
+ ```dockerfile
199
+ # Official and verified
200
+ FROM nginx:1.25
201
+ FROM postgres:16
202
+
203
+ # Minimal images
204
+ FROM gcr.io/distroless/static
205
+ FROM alpine:3.19
206
+ ```
207
+
208
+ ## Example Dockerfiles
209
+
210
+ ### Node.js
211
+
212
+ ```dockerfile
213
+ FROM node:20-slim AS builder
214
+ WORKDIR /app
215
+ COPY package*.json ./
216
+ RUN npm ci
217
+ COPY . .
218
+ RUN npm run build
219
+
220
+ FROM node:20-slim
221
+ WORKDIR /app
222
+ COPY --from=builder /app/dist ./dist
223
+ COPY --from=builder /app/node_modules ./node_modules
224
+ USER node
225
+ EXPOSE 3000
226
+ CMD ["node", "dist/server.js"]
227
+ ```
228
+
229
+ ### Python
230
+
231
+ ```dockerfile
232
+ FROM python:3.12-slim AS builder
233
+ WORKDIR /app
234
+ RUN pip install --user pipenv
235
+ COPY Pipfile Pipfile.lock ./
236
+ RUN pipenv install --system --deploy
237
+
238
+ FROM python:3.12-slim
239
+ WORKDIR /app
240
+ COPY --from=builder /root/.local /root/.local
241
+ COPY . .
242
+ ENV PATH=/root/.local/bin:$PATH
243
+ USER nobody
244
+ EXPOSE 8000
245
+ CMD ["gunicorn", "-b", "0.0.0.0:8000", "app:app"]
246
+ ```
247
+
248
+ ### Go
249
+
250
+ ```dockerfile
251
+ FROM golang:1.21-alpine AS builder
252
+ WORKDIR /app
253
+ COPY go.mod go.sum ./
254
+ RUN go mod download
255
+ COPY . .
256
+ RUN CGO_ENABLED=0 GOOS=linux go build -o /app/server
257
+
258
+ FROM scratch
259
+ COPY --from=builder /app/server /server
260
+ EXPOSE 8080
261
+ ENTRYPOINT ["/server"]
262
+ ```
@@ -0,0 +1,26 @@
1
+ # Docker Guide
2
+
3
+ metadata:
4
+ name: docker
5
+ description: Docker containerization reference documentation
6
+
7
+ source:
8
+ type: external
9
+ origin: docker.com
10
+ urls:
11
+ - https://docs.docker.com/
12
+ - https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
13
+ - https://docs.docker.com/compose/compose-file/best-practices/
14
+ last_fetched: "2026-01-22"
15
+
16
+ documents:
17
+ - name: dockerfile-best-practices
18
+ path: ./dockerfile-best-practices.md
19
+ description: Dockerfile best practices
20
+
21
+ - name: compose-best-practices
22
+ path: ./compose-best-practices.md
23
+ description: Docker Compose best practices
24
+
25
+ used_by:
26
+ - docker-expert