Demonstrates the compose-as-source-of-truth path (ADR-026): import an existing docker-compose.yml into typed Scores, then build/publish/deploy with the fleet pattern (no ApplicationScore, no ArgoCD). - compose.rs: docker-compose-types → typed ComposeApp; loud on bind mounts / unparseable ports, warns on depends_on/command/restart. - chart.rs: per-service Deployment+Service (unique filenames), RWX PVC per mounted named volume, RollingUpdate/Recreate strategy. Deploy-only knobs live here, never in compose or Harmony.toml. - score.rs: ComposeAppScore = helm upgrade --install + public Ingress. - publish.rs: docker build/push each built service + helm package/push. - app/: minimal real Java(SQLite)+React(nginx) compose stack. - 16 unit tests over import + chart generation.
15 lines
345 B
Docker
15 lines
345 B
Docker
FROM node:22-alpine AS build
|
|
WORKDIR /app
|
|
COPY package.json ./
|
|
RUN npm install
|
|
COPY . .
|
|
RUN npm run build
|
|
|
|
FROM nginx:alpine
|
|
COPY --from=build /app/dist /usr/share/nginx/html
|
|
COPY nginx.conf.template /etc/nginx/templates/default.conf.template
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
EXPOSE 80
|
|
ENTRYPOINT ["/entrypoint.sh"]
|