@el-j/magic-helix-core 4.0.0-beta.2 → 4.0.0-beta.4

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 (165) hide show
  1. package/dist/index-B88j4AyE.js +13 -0
  2. package/dist/index-B88j4AyE.js.map +1 -0
  3. package/dist/index-CY-pQbuu.cjs +2 -0
  4. package/dist/index-CY-pQbuu.cjs.map +1 -0
  5. package/dist/index.cjs +75 -1
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.d.ts +0 -1
  8. package/dist/index.mjs +2214 -51
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/pattern-combiner.d.ts +1 -1
  11. package/dist/plugin-loader.d.ts +2 -1
  12. package/package.json +4 -4
  13. package/dist/BasePlugin-6wv0hYJ9.js +0 -98
  14. package/dist/BasePlugin-6wv0hYJ9.js.map +0 -1
  15. package/dist/BasePlugin-odQJAKA-.cjs +0 -2
  16. package/dist/BasePlugin-odQJAKA-.cjs.map +0 -1
  17. package/dist/builtin-plugins/base/BasePlugin.d.ts +0 -69
  18. package/dist/builtin-plugins/cpp/index.d.ts +0 -46
  19. package/dist/builtin-plugins/csharp/index.d.ts +0 -20
  20. package/dist/builtin-plugins/go/index.d.ts +0 -23
  21. package/dist/builtin-plugins/index.d.ts +0 -16
  22. package/dist/builtin-plugins/java/index.d.ts +0 -22
  23. package/dist/builtin-plugins/nodejs/index.d.ts +0 -44
  24. package/dist/builtin-plugins/php/index.d.ts +0 -20
  25. package/dist/builtin-plugins/python/index.d.ts +0 -27
  26. package/dist/builtin-plugins/ruby/index.d.ts +0 -20
  27. package/dist/builtin-plugins/rust/index.d.ts +0 -53
  28. package/dist/builtin-plugins/swift/index.d.ts +0 -22
  29. package/dist/default_templates/angular/angular-core.md +0 -19
  30. package/dist/default_templates/architecture/codeowners.md +0 -123
  31. package/dist/default_templates/architecture/monorepo.md +0 -146
  32. package/dist/default_templates/architecture/nx.md +0 -122
  33. package/dist/default_templates/architecture/turborepo.md +0 -114
  34. package/dist/default_templates/ci/github-actions.md +0 -268
  35. package/dist/default_templates/ci/gitlab-ci.md +0 -330
  36. package/dist/default_templates/containers/docker-multistage.md +0 -120
  37. package/dist/default_templates/containers/kubernetes-deploy.md +0 -210
  38. package/dist/default_templates/devops/docker-compose.md +0 -111
  39. package/dist/default_templates/devops/docker-dockerfile.md +0 -94
  40. package/dist/default_templates/devops/github-actions.md +0 -160
  41. package/dist/default_templates/devops/gitlab-ci.md +0 -210
  42. package/dist/default_templates/dotnet/framework-aspnetcore.md +0 -205
  43. package/dist/default_templates/dotnet/framework-blazor.md +0 -271
  44. package/dist/default_templates/dotnet/lang-csharp.md +0 -162
  45. package/dist/default_templates/generic/lang-typescript.md +0 -57
  46. package/dist/default_templates/generic/state-redux.md +0 -21
  47. package/dist/default_templates/generic/state-rxjs.md +0 -6
  48. package/dist/default_templates/generic/style-mui.md +0 -23
  49. package/dist/default_templates/generic/style-tailwind.md +0 -76
  50. package/dist/default_templates/generic/test-cypress.md +0 -21
  51. package/dist/default_templates/generic/test-jest.md +0 -20
  52. package/dist/default_templates/generic/test-playwright.md +0 -21
  53. package/dist/default_templates/generic/test-vitest.md +0 -131
  54. package/dist/default_templates/go/lang-go.md +0 -571
  55. package/dist/default_templates/java/build-gradle.md +0 -102
  56. package/dist/default_templates/java/build-maven.md +0 -86
  57. package/dist/default_templates/java/framework-spring-boot.md +0 -179
  58. package/dist/default_templates/java/lang-java.md +0 -78
  59. package/dist/default_templates/java/lang-kotlin.md +0 -88
  60. package/dist/default_templates/meta/magic-helix-meta.md +0 -213
  61. package/dist/default_templates/meta/meta-debug.md +0 -459
  62. package/dist/default_templates/meta/meta-implement.md +0 -450
  63. package/dist/default_templates/meta/meta-roadmap.md +0 -265
  64. package/dist/default_templates/nestjs/nestjs-core.md +0 -7
  65. package/dist/default_templates/patterns/architecture/clean-architecture.md +0 -469
  66. package/dist/default_templates/patterns/architecture/dependency-injection.md +0 -517
  67. package/dist/default_templates/patterns/architecture/domain-driven-design.md +0 -621
  68. package/dist/default_templates/patterns/architecture/layered-architecture.md +0 -382
  69. package/dist/default_templates/patterns/architecture/repository-pattern.md +0 -408
  70. package/dist/default_templates/patterns/domain-expertise/nextjs-rules.md +0 -115
  71. package/dist/default_templates/patterns/domain-expertise/react-patterns.md +0 -181
  72. package/dist/default_templates/patterns/domain-expertise/server-components.md +0 -212
  73. package/dist/default_templates/patterns/domain-expertise/shadcn-ui.md +0 -52
  74. package/dist/default_templates/patterns/domain-expertise/tailwind-patterns.md +0 -52
  75. package/dist/default_templates/patterns/environment/container-awareness.md +0 -17
  76. package/dist/default_templates/patterns/environment/ide-features.md +0 -17
  77. package/dist/default_templates/patterns/environment/os-commands.md +0 -17
  78. package/dist/default_templates/patterns/organization/heading-hierarchy.md +0 -103
  79. package/dist/default_templates/patterns/organization/sequential-workflows.md +0 -102
  80. package/dist/default_templates/patterns/organization/xml-rule-groups.md +0 -64
  81. package/dist/default_templates/patterns/reasoning/agent-loop.md +0 -151
  82. package/dist/default_templates/patterns/reasoning/confirmation-gates.md +0 -141
  83. package/dist/default_templates/patterns/reasoning/dependency-analysis.md +0 -132
  84. package/dist/default_templates/patterns/reasoning/one-tool-per-iteration.md +0 -152
  85. package/dist/default_templates/patterns/reasoning/preview-before-action.md +0 -194
  86. package/dist/default_templates/patterns/reasoning/reflection-checkpoints.md +0 -166
  87. package/dist/default_templates/patterns/reasoning/result-verification.md +0 -157
  88. package/dist/default_templates/patterns/reasoning/subtask-breakdown.md +0 -131
  89. package/dist/default_templates/patterns/reasoning/thinking-tags.md +0 -100
  90. package/dist/default_templates/patterns/role-definition/capability-declarations.md +0 -72
  91. package/dist/default_templates/patterns/role-definition/expert-identity.md +0 -45
  92. package/dist/default_templates/patterns/role-definition/scope-boundaries.md +0 -61
  93. package/dist/default_templates/patterns/safety/code-safety-rules.md +0 -17
  94. package/dist/default_templates/patterns/safety/credential-handling.md +0 -17
  95. package/dist/default_templates/patterns/safety/destructive-warnings.md +0 -17
  96. package/dist/default_templates/patterns/safety/refusal-messages.md +0 -17
  97. package/dist/default_templates/patterns/tone/adaptive-tone.md +0 -17
  98. package/dist/default_templates/patterns/tone/concise-communication.md +0 -17
  99. package/dist/default_templates/patterns/tone/forbidden-phrases.md +0 -17
  100. package/dist/default_templates/patterns/tool-guidelines/function-schemas.md +0 -143
  101. package/dist/default_templates/patterns/tool-guidelines/parameter-examples.md +0 -137
  102. package/dist/default_templates/patterns/tool-guidelines/usage-policies.md +0 -105
  103. package/dist/default_templates/php/framework-laravel.md +0 -112
  104. package/dist/default_templates/php/lang-php.md +0 -94
  105. package/dist/default_templates/python/lang-python.md +0 -508
  106. package/dist/default_templates/react/react-core.md +0 -677
  107. package/dist/default_templates/react/react-zustand.md +0 -7
  108. package/dist/default_templates/ruby/framework-rails.md +0 -309
  109. package/dist/default_templates/ruby/framework-sinatra.md +0 -227
  110. package/dist/default_templates/ruby/lang-ruby.md +0 -216
  111. package/dist/default_templates/rust/lang-rust.md +0 -89
  112. package/dist/default_templates/swift/framework-vapor.md +0 -352
  113. package/dist/default_templates/swift/lang-swift.md +0 -291
  114. package/dist/default_templates/vue/style-primevue.md +0 -6
  115. package/dist/default_templates/vue/style-quasar.md +0 -22
  116. package/dist/default_templates/vue/vue-core.md +0 -108
  117. package/dist/default_templates/vue/vue-pinia.md +0 -5
  118. package/dist/index-0GK4RlUx.js +0 -1748
  119. package/dist/index-0GK4RlUx.js.map +0 -1
  120. package/dist/index-AkVwRl-r.js +0 -92
  121. package/dist/index-AkVwRl-r.js.map +0 -1
  122. package/dist/index-B6BeG1yT.cjs +0 -68
  123. package/dist/index-B6BeG1yT.cjs.map +0 -1
  124. package/dist/index-B8pyjKdF.js +0 -94
  125. package/dist/index-B8pyjKdF.js.map +0 -1
  126. package/dist/index-BQ6v041y.js +0 -13
  127. package/dist/index-BQ6v041y.js.map +0 -1
  128. package/dist/index-Baxb1vI_.js +0 -210
  129. package/dist/index-Baxb1vI_.js.map +0 -1
  130. package/dist/index-Bg8DD8ku.js +0 -216
  131. package/dist/index-Bg8DD8ku.js.map +0 -1
  132. package/dist/index-BqTqxCpG.cjs +0 -89
  133. package/dist/index-BqTqxCpG.cjs.map +0 -1
  134. package/dist/index-Bv4Q1Pr7.cjs +0 -33
  135. package/dist/index-Bv4Q1Pr7.cjs.map +0 -1
  136. package/dist/index-CN8J45Nc.cjs +0 -24
  137. package/dist/index-CN8J45Nc.cjs.map +0 -1
  138. package/dist/index-CPbv2Od1.js +0 -62
  139. package/dist/index-CPbv2Od1.js.map +0 -1
  140. package/dist/index-Cf-MC6Al.js +0 -63
  141. package/dist/index-Cf-MC6Al.js.map +0 -1
  142. package/dist/index-DDPXXXDy.cjs +0 -19
  143. package/dist/index-DDPXXXDy.cjs.map +0 -1
  144. package/dist/index-DO30AzDe.cjs +0 -19
  145. package/dist/index-DO30AzDe.cjs.map +0 -1
  146. package/dist/index-DkvW5yBY.js +0 -2249
  147. package/dist/index-DkvW5yBY.js.map +0 -1
  148. package/dist/index-Dn1ehjIj.cjs +0 -80
  149. package/dist/index-Dn1ehjIj.cjs.map +0 -1
  150. package/dist/index-DqHvgoXJ.cjs +0 -19
  151. package/dist/index-DqHvgoXJ.cjs.map +0 -1
  152. package/dist/index-K39pdw94.cjs +0 -31
  153. package/dist/index-K39pdw94.cjs.map +0 -1
  154. package/dist/index-OT2XAJkc.js +0 -117
  155. package/dist/index-OT2XAJkc.js.map +0 -1
  156. package/dist/index-TPAX4XKg.cjs +0 -30
  157. package/dist/index-TPAX4XKg.cjs.map +0 -1
  158. package/dist/index-WmVSB57y.js +0 -107
  159. package/dist/index-WmVSB57y.js.map +0 -1
  160. package/dist/index-mYXvc3Fs.js +0 -68
  161. package/dist/index-mYXvc3Fs.js.map +0 -1
  162. package/dist/index-nioXOg4m.cjs +0 -76
  163. package/dist/index-nioXOg4m.cjs.map +0 -1
  164. package/dist/index-okhY3fWD.cjs +0 -2
  165. package/dist/index-okhY3fWD.cjs.map +0 -1
@@ -1,330 +0,0 @@
1
- # GitLab CI/CD Templates
2
-
3
- ## Node.js/TypeScript Pipeline
4
- ```yaml
5
- image: node:20-alpine
6
-
7
- stages:
8
- - build
9
- - test
10
- - docker
11
- - deploy
12
-
13
- cache:
14
- key:
15
- files:
16
- - package-lock.json
17
- paths:
18
- - node_modules/
19
- - .npm/
20
-
21
- variables:
22
- npm_config_cache: "$CI_PROJECT_DIR/.npm"
23
-
24
- build:
25
- stage: build
26
- script:
27
- - npm ci
28
- - npm run build
29
- artifacts:
30
- paths:
31
- - dist/
32
- expire_in: 1 hour
33
-
34
- test:
35
- stage: test
36
- coverage: '/Lines\s*:\s*(\d+\.\d+)%/'
37
- script:
38
- - npm ci
39
- - npm test -- --coverage
40
- artifacts:
41
- reports:
42
- coverage_report:
43
- coverage_format: cobertura
44
- path: coverage/cobertura-coverage.xml
45
- junit: junit.xml
46
-
47
- lint:
48
- stage: test
49
- script:
50
- - npm ci
51
- - npm run lint
52
-
53
- docker-build:
54
- stage: docker
55
- image: docker:latest
56
- services:
57
- - docker:dind
58
- before_script:
59
- - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
60
- script:
61
- - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA .
62
- - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA $CI_REGISTRY_IMAGE:latest
63
- - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
64
- - docker push $CI_REGISTRY_IMAGE:latest
65
- only:
66
- - main
67
-
68
- deploy-production:
69
- stage: deploy
70
- image: alpine/kubectl:latest
71
- script:
72
- - kubectl config set-cluster k8s --server="$KUBE_URL" --insecure-skip-tls-verify=true
73
- - kubectl config set-credentials admin --token="$KUBE_TOKEN"
74
- - kubectl config set-context default --cluster=k8s --user=admin
75
- - kubectl config use-context default
76
- - kubectl set image deployment/app app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA -n production
77
- environment:
78
- name: production
79
- url: https://app.example.com
80
- only:
81
- - main
82
- ```
83
-
84
- ## Python Pipeline
85
- ```yaml
86
- image: python:3.12-slim
87
-
88
- stages:
89
- - test
90
- - build
91
- - deploy
92
-
93
- variables:
94
- PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
95
-
96
- cache:
97
- paths:
98
- - .cache/pip
99
- - .venv/
100
-
101
- before_script:
102
- - pip install poetry
103
- - poetry config virtualenvs.in-project true
104
- - poetry install
105
-
106
- test:
107
- stage: test
108
- script:
109
- - poetry run pytest --cov --cov-report=xml --cov-report=term
110
- - poetry run ruff check .
111
- - poetry run mypy .
112
- coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/'
113
- artifacts:
114
- reports:
115
- coverage_report:
116
- coverage_format: cobertura
117
- path: coverage.xml
118
-
119
- docker:
120
- stage: build
121
- image: docker:latest
122
- services:
123
- - docker:dind
124
- script:
125
- - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA .
126
- - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
127
- only:
128
- - main
129
- ```
130
-
131
- ## Go Pipeline
132
- ```yaml
133
- image: golang:1.21
134
-
135
- stages:
136
- - test
137
- - build
138
-
139
- variables:
140
- GOPATH: $CI_PROJECT_DIR/.go
141
-
142
- cache:
143
- paths:
144
- - .go/pkg/mod/
145
-
146
- before_script:
147
- - mkdir -p .go
148
- - go mod download
149
-
150
- test:
151
- stage: test
152
- script:
153
- - go fmt $(go list ./... | grep -v /vendor/)
154
- - go vet $(go list ./... | grep -v /vendor/)
155
- - go test -race -coverprofile=coverage.txt -covermode=atomic ./...
156
- coverage: '/coverage: \d+\.\d+% of statements/'
157
- artifacts:
158
- reports:
159
- coverage_report:
160
- coverage_format: cobertura
161
- path: coverage.xml
162
-
163
- build:
164
- stage: build
165
- script:
166
- - CGO_ENABLED=0 go build -ldflags="-s -w" -o app
167
- artifacts:
168
- paths:
169
- - app
170
- ```
171
-
172
- ## Rust Pipeline
173
- ```yaml
174
- image: rust:1.75
175
-
176
- stages:
177
- - test
178
- - build
179
-
180
- variables:
181
- CARGO_HOME: $CI_PROJECT_DIR/.cargo
182
-
183
- cache:
184
- paths:
185
- - .cargo/
186
- - target/
187
-
188
- test:
189
- stage: test
190
- script:
191
- - rustc --version && cargo --version
192
- - cargo fmt -- --check
193
- - cargo clippy -- -D warnings
194
- - cargo test --verbose
195
-
196
- build:
197
- stage: build
198
- script:
199
- - cargo build --release
200
- artifacts:
201
- paths:
202
- - target/release/app
203
- ```
204
-
205
- ## Java/Maven Pipeline
206
- ```yaml
207
- image: maven:3.9-eclipse-temurin-21
208
-
209
- stages:
210
- - build
211
- - test
212
- - package
213
-
214
- variables:
215
- MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository"
216
-
217
- cache:
218
- paths:
219
- - .m2/repository
220
-
221
- build:
222
- stage: build
223
- script:
224
- - mvn compile
225
-
226
- test:
227
- stage: test
228
- script:
229
- - mvn test
230
- - mvn jacoco:report
231
- coverage: '/Total.*?([0-9]{1,3})%/'
232
- artifacts:
233
- reports:
234
- junit: target/surefire-reports/TEST-*.xml
235
-
236
- package:
237
- stage: package
238
- script:
239
- - mvn package -DskipTests
240
- artifacts:
241
- paths:
242
- - target/*.jar
243
- ```
244
-
245
- ## Multi-Stage with Environments
246
- ```yaml
247
- stages:
248
- - build
249
- - test
250
- - staging
251
- - production
252
-
253
- build:
254
- stage: build
255
- script:
256
- - npm ci
257
- - npm run build
258
- artifacts:
259
- paths:
260
- - dist/
261
-
262
- test:
263
- stage: test
264
- script:
265
- - npm test
266
-
267
- deploy-staging:
268
- stage: staging
269
- script:
270
- - echo "Deploying to staging"
271
- - kubectl set image deployment/app app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA -n staging
272
- environment:
273
- name: staging
274
- url: https://staging.example.com
275
- only:
276
- - develop
277
-
278
- deploy-production:
279
- stage: production
280
- script:
281
- - echo "Deploying to production"
282
- - kubectl set image deployment/app app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA -n production
283
- environment:
284
- name: production
285
- url: https://app.example.com
286
- when: manual
287
- only:
288
- - main
289
- ```
290
-
291
- ## Docker with Buildx (Multi-arch)
292
- ```yaml
293
- docker-multiarch:
294
- stage: build
295
- image: docker:latest
296
- services:
297
- - docker:dind
298
- before_script:
299
- - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
300
- - docker buildx create --use --name multiarch
301
- - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
302
- script:
303
- - docker buildx build --platform linux/amd64,linux/arm64 -t $CI_REGISTRY_IMAGE:latest --push .
304
- ```
305
-
306
- ## Security Scanning
307
- ```yaml
308
- include:
309
- - template: Security/SAST.gitlab-ci.yml
310
- - template: Security/Dependency-Scanning.gitlab-ci.yml
311
- - template: Security/Container-Scanning.gitlab-ci.yml
312
-
313
- container_scanning:
314
- variables:
315
- DOCKER_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
316
- dependencies:
317
- - docker-build
318
- ```
319
-
320
- ## Best Practices
321
- 1. **Caching**: Cache dependencies (`node_modules/`, `.m2/`, `.cargo/`)
322
- 2. **Artifacts**: Pass build outputs between stages
323
- 3. **Environments**: Use GitLab environments for deployment tracking
324
- 4. **Manual Gates**: Use `when: manual` for production deployments
325
- 5. **Templates**: Use `include:` to reuse common configurations
326
- 6. **Variables**: Store secrets in GitLab CI/CD Variables (masked & protected)
327
- 7. **Docker Layer Caching**: Use `DOCKER_BUILDKIT=1` for faster builds
328
- 8. **Coverage**: Use `coverage:` regex to display coverage in merge requests
329
- 9. **Resource Groups**: Prevent concurrent deployments to the same environment
330
- 10. **Rules**: Use `rules:` instead of `only:`/`except:` for modern syntax
@@ -1,120 +0,0 @@
1
- # Docker Multi-Stage Build Best Practices
2
-
3
- ## Overview
4
- Multi-stage builds reduce image size and improve security by separating build-time and runtime dependencies.
5
-
6
- ## Basic Pattern
7
- ```dockerfile
8
- # Stage 1: Build
9
- FROM builder-image AS builder
10
- WORKDIR /build
11
- COPY source files
12
- RUN build commands
13
-
14
- # Stage 2: Runtime
15
- FROM runtime-image
16
- WORKDIR /app
17
- COPY --from=builder /build/artifacts .
18
- CMD ["run", "app"]
19
- ```
20
-
21
- ## Language-Specific Optimizations
22
-
23
- ### Go
24
- ```dockerfile
25
- FROM golang:1.21-alpine AS builder
26
- WORKDIR /build
27
- COPY go.mod go.sum ./
28
- RUN go mod download
29
- COPY . .
30
- RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o app
31
-
32
- FROM scratch
33
- COPY --from=builder /build/app /app
34
- ENTRYPOINT ["/app"]
35
- ```
36
-
37
- ### Rust
38
- ```dockerfile
39
- FROM rust:1.75-alpine AS builder
40
- WORKDIR /build
41
- RUN apk add --no-cache musl-dev
42
- COPY Cargo.toml Cargo.lock ./
43
- RUN mkdir src && echo "fn main() {}" > src/main.rs && cargo build --release && rm -rf src
44
- COPY src ./src
45
- RUN touch src/main.rs && cargo build --release
46
-
47
- FROM alpine:latest
48
- RUN apk add --no-cache ca-certificates
49
- COPY --from=builder /build/target/release/app /app
50
- CMD ["/app"]
51
- ```
52
-
53
- ### Node.js
54
- ```dockerfile
55
- FROM node:20-alpine AS builder
56
- WORKDIR /build
57
- COPY package*.json ./
58
- RUN npm ci --only=production
59
-
60
- FROM node:20-alpine
61
- WORKDIR /app
62
- COPY --from=builder /build/node_modules ./node_modules
63
- COPY . .
64
- CMD ["node", "index.js"]
65
- ```
66
-
67
- ### Java/Spring Boot
68
- ```dockerfile
69
- FROM maven:3.9-eclipse-temurin-21 AS builder
70
- WORKDIR /build
71
- COPY pom.xml .
72
- RUN mvn dependency:go-offline
73
- COPY src ./src
74
- RUN mvn package -DskipTests
75
-
76
- FROM eclipse-temurin:21-jre-alpine
77
- WORKDIR /app
78
- COPY --from=builder /build/target/*.jar app.jar
79
- ENTRYPOINT ["java", "-jar", "app.jar"]
80
- ```
81
-
82
- ### Python
83
- ```dockerfile
84
- FROM python:3.12-slim AS builder
85
- WORKDIR /build
86
- RUN pip install --no-cache-dir poetry
87
- COPY pyproject.toml poetry.lock ./
88
- RUN poetry export -f requirements.txt -o requirements.txt --without-hashes
89
- RUN pip wheel --no-cache-dir --wheel-dir /wheels -r requirements.txt
90
-
91
- FROM python:3.12-slim
92
- WORKDIR /app
93
- COPY --from=builder /wheels /wheels
94
- RUN pip install --no-cache-dir /wheels/*
95
- COPY . .
96
- CMD ["python", "main.py"]
97
- ```
98
-
99
- ## Security Hardening
100
- - Use specific image tags, not `latest`
101
- - Run as non-root user: `USER 1000:1000`
102
- - Scan images: `docker scout cves image:tag`
103
- - Use distroless or alpine base images
104
- - Multi-platform builds: `docker buildx build --platform linux/amd64,linux/arm64`
105
-
106
- ## .dockerignore Template
107
- ```
108
- node_modules
109
- .git
110
- .env
111
- *.log
112
- dist
113
- coverage
114
- .vscode
115
- ```
116
-
117
- ## Build Optimization
118
- - Layer caching: COPY dependency files before source code
119
- - Parallel builds: `RUN cmd1 & cmd2 & wait`
120
- - Build contexts: Use `.dockerignore` to exclude unnecessary files
@@ -1,210 +0,0 @@
1
- # Kubernetes Deployment Guide
2
-
3
- ## Basic Deployment Structure
4
-
5
- ### Deployment Manifest
6
- ```yaml
7
- apiVersion: apps/v1
8
- kind: Deployment
9
- metadata:
10
- name: app-deployment
11
- labels:
12
- app: myapp
13
- spec:
14
- replicas: 3
15
- selector:
16
- matchLabels:
17
- app: myapp
18
- template:
19
- metadata:
20
- labels:
21
- app: myapp
22
- spec:
23
- containers:
24
- - name: app
25
- image: myregistry/myapp:1.0.0
26
- ports:
27
- - containerPort: 8080
28
- resources:
29
- requests:
30
- memory: "128Mi"
31
- cpu: "100m"
32
- limits:
33
- memory: "512Mi"
34
- cpu: "500m"
35
- livenessProbe:
36
- httpGet:
37
- path: /health
38
- port: 8080
39
- initialDelaySeconds: 30
40
- periodSeconds: 10
41
- readinessProbe:
42
- httpGet:
43
- path: /ready
44
- port: 8080
45
- initialDelaySeconds: 10
46
- periodSeconds: 5
47
- env:
48
- - name: DATABASE_URL
49
- valueFrom:
50
- secretKeyRef:
51
- name: app-secrets
52
- key: db-url
53
- ```
54
-
55
- ### Service Manifest
56
- ```yaml
57
- apiVersion: v1
58
- kind: Service
59
- metadata:
60
- name: app-service
61
- spec:
62
- selector:
63
- app: myapp
64
- ports:
65
- - protocol: TCP
66
- port: 80
67
- targetPort: 8080
68
- type: LoadBalancer
69
- ```
70
-
71
- ### ConfigMap
72
- ```yaml
73
- apiVersion: v1
74
- kind: ConfigMap
75
- metadata:
76
- name: app-config
77
- data:
78
- LOG_LEVEL: "info"
79
- API_TIMEOUT: "30s"
80
- ```
81
-
82
- ### Secret
83
- ```yaml
84
- apiVersion: v1
85
- kind: Secret
86
- metadata:
87
- name: app-secrets
88
- type: Opaque
89
- data:
90
- db-url: cG9zdGdyZXM6Ly9leGFtcGxl # base64 encoded
91
- ```
92
-
93
- ## Ingress Configuration
94
- ```yaml
95
- apiVersion: networking.k8s.io/v1
96
- kind: Ingress
97
- metadata:
98
- name: app-ingress
99
- annotations:
100
- cert-manager.io/cluster-issuer: letsencrypt-prod
101
- spec:
102
- ingressClassName: nginx
103
- tls:
104
- - hosts:
105
- - myapp.example.com
106
- secretName: app-tls
107
- rules:
108
- - host: myapp.example.com
109
- http:
110
- paths:
111
- - path: /
112
- pathType: Prefix
113
- backend:
114
- service:
115
- name: app-service
116
- port:
117
- number: 80
118
- ```
119
-
120
- ## Horizontal Pod Autoscaler
121
- ```yaml
122
- apiVersion: autoscaling/v2
123
- kind: HorizontalPodAutoscaler
124
- metadata:
125
- name: app-hpa
126
- spec:
127
- scaleTargetRef:
128
- apiVersion: apps/v1
129
- kind: Deployment
130
- name: app-deployment
131
- minReplicas: 2
132
- maxReplicas: 10
133
- metrics:
134
- - type: Resource
135
- resource:
136
- name: cpu
137
- target:
138
- type: Utilization
139
- averageUtilization: 70
140
- ```
141
-
142
- ## StatefulSet (for databases)
143
- ```yaml
144
- apiVersion: apps/v1
145
- kind: StatefulSet
146
- metadata:
147
- name: postgres
148
- spec:
149
- serviceName: postgres
150
- replicas: 3
151
- selector:
152
- matchLabels:
153
- app: postgres
154
- template:
155
- metadata:
156
- labels:
157
- app: postgres
158
- spec:
159
- containers:
160
- - name: postgres
161
- image: postgres:16-alpine
162
- ports:
163
- - containerPort: 5432
164
- volumeMounts:
165
- - name: data
166
- mountPath: /var/lib/postgresql/data
167
- volumeClaimTemplates:
168
- - metadata:
169
- name: data
170
- spec:
171
- accessModes: ["ReadWriteOnce"]
172
- resources:
173
- requests:
174
- storage: 10Gi
175
- ```
176
-
177
- ## Best Practices
178
- 1. **Resource Limits**: Always set CPU/memory requests and limits
179
- 2. **Health Checks**: Implement liveness and readiness probes
180
- 3. **Rolling Updates**: Use `RollingUpdate` strategy with `maxSurge` and `maxUnavailable`
181
- 4. **Pod Disruption Budgets**: Ensure availability during node maintenance
182
- 5. **Network Policies**: Restrict pod-to-pod communication
183
- 6. **RBAC**: Use ServiceAccounts with minimal permissions
184
- 7. **Secrets Management**: Use external secret managers (Vault, AWS Secrets Manager)
185
- 8. **Monitoring**: Deploy Prometheus/Grafana stack
186
- 9. **Logging**: Use Fluentd/Fluent Bit for log aggregation
187
- 10. **GitOps**: Manage deployments with ArgoCD or Flux
188
-
189
- ## Common Commands
190
- ```bash
191
- # Apply manifests
192
- kubectl apply -f deployment.yaml
193
-
194
- # Check status
195
- kubectl get pods -l app=myapp
196
- kubectl describe pod <pod-name>
197
- kubectl logs <pod-name> -f
198
-
199
- # Scale deployment
200
- kubectl scale deployment app-deployment --replicas=5
201
-
202
- # Update image
203
- kubectl set image deployment/app-deployment app=myregistry/myapp:2.0.0
204
-
205
- # Rollback
206
- kubectl rollout undo deployment/app-deployment
207
-
208
- # Port forwarding
209
- kubectl port-forward svc/app-service 8080:80
210
- ```