@oktis-works/cms 0.4.22 → 0.4.23
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.
- package/dist/assets.d.ts +3 -3
- package/dist/assets.d.ts.map +1 -1
- package/dist/assets.js +5 -0
- package/dist/assets.js.map +1 -1
- package/dist/pm2.d.ts.map +1 -1
- package/dist/pm2.js +13 -3
- package/dist/pm2.js.map +1 -1
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +10 -4
- package/dist/start.js.map +1 -1
- package/package.json +1 -1
package/dist/assets.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export declare const ASSET_MIRROR: {
|
|
|
12
12
|
* processo escolhido pelo `command` do compose. Quatro Dockerfiles seriam
|
|
13
13
|
* quatro builds idênticos consumindo o mesmo node_modules.
|
|
14
14
|
*/
|
|
15
|
-
export declare const DOCKERFILE = "# syntax=docker/dockerfile:1\n# @oktis-works - Single OkCMS image (entrypoints: api | admin | web | worker)\n#\n# Generated by the CLI scaffold. Canonical at\n# infrastructure/docker/Dockerfile in this monorepo.\n#\n# SECURITY: the command-line tool never enters this image. The container\n# exposes only the application processes \u2014 no package installer, no Docker\n# socket access, no way to change its own state. Deploy and configuration\n# always run on the host.\nFROM oven/bun:1-alpine AS base\nWORKDIR /app\nENV NODE_ENV=production\n\n# --- dependencies -----------------------------------------------------------\n# Manifest + lock first: changing just the code does not invalidate\n# this `install`.\nFROM base AS deps\nCOPY package.json bun.lock* package-lock.json* yarn.lock* pnpm-lock.yaml* ./\nRUN bun install --production --frozen-lockfile\n\n# --- runtime ----------------------------------------------------------------\nFROM base AS runtime\n# 1. project code (.dockerignore drops .env, node_modules and .data)\nCOPY . .\n# 2. clean node_modules from the deps stage, on top \u2014 never the host's\nCOPY --from=deps /app/node_modules ./node_modules\n\nRUN mkdir -p /app/.data/storage /app/.data/cache /app/logs\n\nEXPOSE 3000 3001 3011\n\n# `docker compose ... command: api` picks the role; see docker/entrypoint.sh\nENTRYPOINT [\"/app/docker/entrypoint.sh\"]\nCMD [\"api\"]\n";
|
|
15
|
+
export declare const DOCKERFILE = "# syntax=docker/dockerfile:1\n# @oktis-works - Single OkCMS image (entrypoints: api | admin | web | worker)\n#\n# Generated by the CLI scaffold. Canonical at\n# infrastructure/docker/Dockerfile in this monorepo.\n#\n# SECURITY: the command-line tool never enters this image. The container\n# exposes only the application processes \u2014 no package installer, no Docker\n# socket access, no way to change its own state. Deploy and configuration\n# always run on the host.\nFROM oven/bun:1-alpine AS base\nWORKDIR /app\nENV NODE_ENV=production\nENV UPLOAD_DIR=/app/.data/storage\n\n# --- dependencies -----------------------------------------------------------\n# Manifest + lock first: changing just the code does not invalidate\n# this `install`.\nFROM base AS deps\nCOPY package.json bun.lock* package-lock.json* yarn.lock* pnpm-lock.yaml* ./\nRUN bun install --production --frozen-lockfile\n\n# --- runtime ----------------------------------------------------------------\nFROM base AS runtime\n# 1. project code (.dockerignore drops .env, node_modules and .data)\nCOPY . .\n# 2. clean node_modules from the deps stage, on top \u2014 never the host's\nCOPY --from=deps /app/node_modules ./node_modules\n\nRUN mkdir -p /app/.data/storage /app/.data/cache /app/logs\n\nEXPOSE 3000 3001 3011\n\n# `docker compose ... command: api` picks the role; see docker/entrypoint.sh\nENTRYPOINT [\"/app/docker/entrypoint.sh\"]\nCMD [\"api\"]\n";
|
|
16
16
|
/** Dispatcher de papéis. Fora da lista, executa o comando literal. */
|
|
17
17
|
export declare const ENTRYPOINT_SH = "#!/bin/sh\n# @oktis-works - Single entrypoint of the okcms/app image\n#\n# Compose picks the role with `command: api|web|admin|worker`. Any other\n# value is passed through literally (`docker run okcms/app sh`), which keeps\n# the container inspectable without rewriting the image.\nset -eu\n\napi_entry=\"node_modules/@oktis-works/api/dist/index.js\"\nweb_entry=\"node_modules/@oktis-works/web/dist/index.js\"\nadmin_entry=\"node_modules/@oktis-works/admin/bin/admin.js\"\nworker_entry=\"node_modules/@oktis-works/worker/dist/index.js\"\n\ncase \"${1:-api}\" in\n api)\n shift\n exec bun \"$api_entry\" \"$@\"\n ;;\n web)\n shift\n exec bun \"$web_entry\" \"$@\"\n ;;\n admin)\n shift\n exec bun \"$admin_entry\" \"$@\"\n ;;\n worker)\n shift\n exec bun \"$worker_entry\" \"$@\"\n ;;\n *)\n exec \"$@\"\n ;;\nesac\n";
|
|
18
18
|
/**
|
|
@@ -33,7 +33,7 @@ export declare const COMPOSE_INFRA = "# @oktis-works - Shared infrastructure of
|
|
|
33
33
|
* `-p okcms-blue` ou `-p okcms-green`. Os containers herdam o prefixo
|
|
34
34
|
* `okcms-<lane>-`, que é exatamente o que os upstreams do nginx apontam.
|
|
35
35
|
*/
|
|
36
|
-
export declare const COMPOSE_DEPLOY = "# @oktis-works - OkCMS blue/green lanes\n# Generated by the CLI. Canonical at\n# infrastructure/compose/docker-compose.deploy.yml\n#\n# ONE FILE, TWO Docker projects. The lane is the project name:\n#\n# docker compose -p okcms-blue -f docker-compose.deploy.yml up -d --build\n# docker compose -p okcms-green -f docker-compose.deploy.yml up -d --build\n#\n# Containers are okcms-<lane>-<service> \u2014 the nginx upstreams point at\n# those names (generated in deploy/nginx/conf.d/00-upstreams.conf).\n#\n# The okcms-net network is EXTERNAL (created by docker-compose.infra.yml)\n# and the infra services are NOT listed here on purpose: without that,\n# `down` of a lane would take the database down with the old lane.\n#\n# Roles (label okcms.role, read by `okcms update`):\n# edge api/web/admin \u2192 fully replaced on each deploy (blue/green)\n# worker BullMQ queue \u2192 NEVER blue/green; drained with SIGTERM on swap\n# data postgres/redis\u2192 untouchable; they live in docker-compose.infra.yml\n#\n# NB: a lane `down` removes CONTAINERS and NETWORKS, but never passes -v\n# (`-v` would wipe the okcms-storage volume shared by blue and green, the\n# one that keeps media alive across deploys).\n\nx-app: &app\n image: okcms/app:${OKCMS_VERSION:-latest}\n build:\n context: .\n dockerfile: docker/Dockerfile\n env_file:\n # .env first (operator ports) \u2014 the environment below overrides\n - .env\n restart: unless-stopped\n networks: [okcms]\n environment:\n NODE_ENV: production\n DB_HOST: postgres\n REDIS_HOST: redis\n volumes:\n - ./plugins:/app/plugins\n - ./themes:/app/themes\n # media shared by both lanes: a deploy never loses files\n - storage-data:/app/.data/storage\n - cache-data:/app/.data/cache\n\nx-api-health: &api-health\n test:\n - CMD\n - bun\n - -e\n - \"fetch('http://127.0.0.1:'+(process.env.PORT||3000)+'/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\"\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 25s\n\nx-web-health: &web-health\n test:\n - CMD\n - bun\n - -e\n - \"fetch('http://127.0.0.1:'+(process.env.WEB_PORT||3001)+'/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\"\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 25s\n\nx-admin-health: &admin-health\n # the admin is an Astro standalone: it serves / and has no /health endpoint\n test:\n - CMD\n - bun\n - -e\n - \"fetch('http://127.0.0.1:'+(process.env.PORT||3011)+'/').then(r=>process.exit(r.status<500?0:1)).catch(()=>process.exit(1))\"\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 30s\n\nservices:\n # ---------------------------------------------------------------- api\n api-blue:\n <<: *app\n container_name: okcms-api-blue\n command: [\"api\"]\n labels:\n okcms.role: edge\n okcms.lane: blue\n okcms.service: api\n healthcheck: *api-health\n\n api-green:\n <<: *app\n container_name: okcms-api-green\n command: [\"api\"]\n labels:\n okcms.role: edge\n okcms.lane: green\n okcms.service: api\n healthcheck: *api-health\n\n # ---------------------------------------------------------------- web\n web-blue:\n <<: *app\n container_name: okcms-web-blue\n command: [\"web\"]\n labels:\n okcms.role: edge\n okcms.lane: blue\n okcms.service: web\n healthcheck: *web-health\n\n web-green:\n <<: *app\n container_name: okcms-web-green\n command: [\"web\"]\n labels:\n okcms.role: edge\n okcms.lane: green\n okcms.service: web\n healthcheck: *web-health\n\n # -------------------------------------------------------------- admin\n # admin reads `PORT` (astro standalone), not `ADMIN_PORT`: a service\n # level environment replaces the merged anchor one, so the three shared\n # ones are repeated.\n admin-blue:\n <<: *app\n container_name: okcms-admin-blue\n command: [\"admin\"]\n environment:\n NODE_ENV: production\n DB_HOST: postgres\n REDIS_HOST: redis\n PORT: ${ADMIN_PORT:-3011}\n labels:\n okcms.role: edge\n okcms.lane: blue\n okcms.service: admin\n healthcheck: *admin-health\n\n admin-green:\n <<: *app\n container_name: okcms-admin-green\n command: [\"admin\"]\n environment:\n NODE_ENV: production\n DB_HOST: postgres\n REDIS_HOST: redis\n PORT: ${ADMIN_PORT:-3011}\n labels:\n okcms.role: edge\n okcms.lane: green\n okcms.service: admin\n healthcheck: *admin-health\n\n # ------------------------------------------------------------- worker\n # a queue cannot take two \"ghost\" instances: the worker starts only after\n # the swap and the old lane's worker drains with SIGTERM\n # (stop_grace_period) first.\n worker-blue:\n <<: *app\n container_name: okcms-worker-blue\n command: [\"worker\"]\n stop_grace_period: 30s\n labels:\n okcms.role: worker\n okcms.lane: blue\n okcms.service: worker\n\n worker-green:\n <<: *app\n container_name: okcms-worker-green\n command: [\"worker\"]\n stop_grace_period: 30s\n labels:\n okcms.role: worker\n okcms.lane: green\n okcms.service: worker\n\nnetworks:\n okcms:\n name: okcms-net\n external: true\n\nvolumes:\n # shared between blue and green on purpose: media survives the deploy\n storage-data:\n name: okcms-storage\n cache-data:\n name: okcms-cache\n";
|
|
36
|
+
export declare const COMPOSE_DEPLOY = "# @oktis-works - OkCMS blue/green lanes\n# Generated by the CLI. Canonical at\n# infrastructure/compose/docker-compose.deploy.yml\n#\n# ONE FILE, TWO Docker projects. The lane is the project name:\n#\n# docker compose -p okcms-blue -f docker-compose.deploy.yml up -d --build\n# docker compose -p okcms-green -f docker-compose.deploy.yml up -d --build\n#\n# Containers are okcms-<lane>-<service> \u2014 the nginx upstreams point at\n# those names (generated in deploy/nginx/conf.d/00-upstreams.conf).\n#\n# The okcms-net network is EXTERNAL (created by docker-compose.infra.yml)\n# and the infra services are NOT listed here on purpose: without that,\n# `down` of a lane would take the database down with the old lane.\n#\n# Roles (label okcms.role, read by `okcms update`):\n# edge api/web/admin \u2192 fully replaced on each deploy (blue/green)\n# worker BullMQ queue \u2192 NEVER blue/green; drained with SIGTERM on swap\n# data postgres/redis\u2192 untouchable; they live in docker-compose.infra.yml\n#\n# NB: a lane `down` removes CONTAINERS and NETWORKS, but never passes -v\n# (`-v` would wipe the okcms-storage volume shared by blue and green, the\n# one that keeps media alive across deploys).\n\nx-app: &app\n image: okcms/app:${OKCMS_VERSION:-latest}\n build:\n context: .\n dockerfile: docker/Dockerfile\n env_file:\n # .env first (operator ports) \u2014 the environment below overrides\n - .env\n restart: unless-stopped\n networks: [okcms]\n environment:\n NODE_ENV: production\n DB_HOST: postgres\n REDIS_HOST: redis\n UPLOAD_DIR: /app/.data/storage\n volumes:\n - ./plugins:/app/plugins\n - ./themes:/app/themes\n # media shared by both lanes: a deploy never loses files\n - storage-data:/app/.data/storage\n - cache-data:/app/.data/cache\n\nx-api-health: &api-health\n test:\n - CMD\n - bun\n - -e\n - \"fetch('http://127.0.0.1:'+(process.env.PORT||3000)+'/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\"\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 25s\n\nx-web-health: &web-health\n test:\n - CMD\n - bun\n - -e\n - \"fetch('http://127.0.0.1:'+(process.env.WEB_PORT||3001)+'/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\"\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 25s\n\nx-admin-health: &admin-health\n # the admin is an Astro standalone: it serves / and has no /health endpoint\n test:\n - CMD\n - bun\n - -e\n - \"fetch('http://127.0.0.1:'+(process.env.PORT||3011)+'/').then(r=>process.exit(r.status<500?0:1)).catch(()=>process.exit(1))\"\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 30s\n\nservices:\n # ---------------------------------------------------------------- api\n api-blue:\n <<: *app\n container_name: okcms-api-blue\n command: [\"api\"]\n labels:\n okcms.role: edge\n okcms.lane: blue\n okcms.service: api\n healthcheck: *api-health\n\n api-green:\n <<: *app\n container_name: okcms-api-green\n command: [\"api\"]\n labels:\n okcms.role: edge\n okcms.lane: green\n okcms.service: api\n healthcheck: *api-health\n\n # ---------------------------------------------------------------- web\n web-blue:\n <<: *app\n container_name: okcms-web-blue\n command: [\"web\"]\n labels:\n okcms.role: edge\n okcms.lane: blue\n okcms.service: web\n healthcheck: *web-health\n\n web-green:\n <<: *app\n container_name: okcms-web-green\n command: [\"web\"]\n labels:\n okcms.role: edge\n okcms.lane: green\n okcms.service: web\n healthcheck: *web-health\n\n # -------------------------------------------------------------- admin\n # admin reads `PORT` (astro standalone), not `ADMIN_PORT`: a service\n # level environment replaces the merged anchor one, so the three shared\n # ones are repeated.\n admin-blue:\n <<: *app\n container_name: okcms-admin-blue\n command: [\"admin\"]\n environment:\n NODE_ENV: production\n DB_HOST: postgres\n REDIS_HOST: redis\n PORT: ${ADMIN_PORT:-3011}\n UPLOAD_DIR: /app/.data/storage\n labels:\n okcms.role: edge\n okcms.lane: blue\n okcms.service: admin\n healthcheck: *admin-health\n\n admin-green:\n <<: *app\n container_name: okcms-admin-green\n command: [\"admin\"]\n environment:\n NODE_ENV: production\n DB_HOST: postgres\n REDIS_HOST: redis\n PORT: ${ADMIN_PORT:-3011}\n UPLOAD_DIR: /app/.data/storage\n labels:\n okcms.role: edge\n okcms.lane: green\n okcms.service: admin\n healthcheck: *admin-health\n\n # ------------------------------------------------------------- worker\n # a queue cannot take two \"ghost\" instances: the worker starts only after\n # the swap and the old lane's worker drains with SIGTERM\n # (stop_grace_period) first.\n worker-blue:\n <<: *app\n container_name: okcms-worker-blue\n command: [\"worker\"]\n stop_grace_period: 30s\n labels:\n okcms.role: worker\n okcms.lane: blue\n okcms.service: worker\n\n worker-green:\n <<: *app\n container_name: okcms-worker-green\n command: [\"worker\"]\n stop_grace_period: 30s\n labels:\n okcms.role: worker\n okcms.lane: green\n okcms.service: worker\n\nnetworks:\n okcms:\n name: okcms-net\n external: true\n\nvolumes:\n # shared between blue and green on purpose: media survives the deploy\n storage-data:\n name: okcms-storage\n cache-data:\n name: okcms-cache\n";
|
|
37
37
|
/**
|
|
38
38
|
* The non-blue/green path: one Docker project (`okcms-app`) holding api, web,
|
|
39
39
|
* admin and worker without lane suffixes. `up -d --build` recreates only what
|
|
@@ -43,7 +43,7 @@ export declare const COMPOSE_DEPLOY = "# @oktis-works - OkCMS blue/green lanes\n
|
|
|
43
43
|
* Network and volumes are the same ones the lanes use, so storage (media)
|
|
44
44
|
* survives a switch between simple mode and blue/green.
|
|
45
45
|
*/
|
|
46
|
-
export declare const COMPOSE_APP = "# @oktis-works - Simple container stack of OkCMS\n# Generated by the CLI.\n#\n# One Docker project, no lanes, no swap:\n#\n# docker compose -p okcms-app -f docker-compose.app.yml up -d --build\n#\n# Containers are okcms-api / okcms-web / okcms-admin / okcms-worker \u2014 the\n# nginx upstreams (deploy/nginx/conf.d/00-upstreams.conf) point at them.\n# Use `okcms deploy` to pick this mode, or blue/green for zero-downtime.\n#\n# Network okcms-net is EXTERNAL (created by docker-compose.infra.yml), so\n# `down` of this stack never touches postgres, redis or the proxy.\n\nx-app: &app\n image: okcms/app:${OKCMS_VERSION:-latest}\n build:\n context: .\n dockerfile: docker/Dockerfile\n env_file:\n - .env\n restart: unless-stopped\n networks: [okcms]\n environment:\n NODE_ENV: production\n DB_HOST: postgres\n REDIS_HOST: redis\n volumes:\n - ./plugins:/app/plugins\n - ./themes:/app/themes\n - storage-data:/app/.data/storage\n - cache-data:/app/.data/cache\n\nx-api-health: &api-health\n test:\n - CMD\n - bun\n - -e\n - \"fetch('http://127.0.0.1:'+(process.env.PORT||3000)+'/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\"\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 25s\n\nx-web-health: &web-health\n test:\n - CMD\n - bun\n - -e\n - \"fetch('http://127.0.0.1:'+(process.env.WEB_PORT||3001)+'/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\"\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 25s\n\nx-admin-health: &admin-health\n # the admin is an Astro standalone: it serves / and has no /health endpoint\n test:\n - CMD\n - bun\n - -e\n - \"fetch('http://127.0.0.1:'+(process.env.PORT||3011)+'/').then(r=>process.exit(r.status<500?0:1)).catch(()=>process.exit(1))\"\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 30s\n\nservices:\n api:\n <<: *app\n container_name: okcms-api\n command: [\"api\"]\n labels:\n okcms.role: edge\n okcms.service: api\n healthcheck: *api-health\n\n web:\n <<: *app\n container_name: okcms-web\n command: [\"web\"]\n labels:\n okcms.role: edge\n okcms.service: web\n healthcheck: *web-health\n\n # the admin reads `PORT` (astro standalone), not `ADMIN_PORT`: a service\n # level environment replaces the merged anchor one, so it is repeated here.\n admin:\n <<: *app\n container_name: okcms-admin\n command: [\"admin\"]\n environment:\n NODE_ENV: production\n DB_HOST: postgres\n REDIS_HOST: redis\n PORT: ${ADMIN_PORT:-3011}\n labels:\n okcms.role: edge\n okcms.service: admin\n healthcheck: *admin-health\n\n worker:\n <<: *app\n container_name: okcms-worker\n command: [\"worker\"]\n stop_grace_period: 30s\n labels:\n okcms.role: worker\n okcms.service: worker\n\nnetworks:\n okcms:\n name: okcms-net\n external: true\n\nvolumes:\n # same names as the lanes: media survives switching deploy modes\n storage-data:\n name: okcms-storage\n cache-data:\n name: okcms-cache\n";
|
|
46
|
+
export declare const COMPOSE_APP = "# @oktis-works - Simple container stack of OkCMS\n# Generated by the CLI.\n#\n# One Docker project, no lanes, no swap:\n#\n# docker compose -p okcms-app -f docker-compose.app.yml up -d --build\n#\n# Containers are okcms-api / okcms-web / okcms-admin / okcms-worker \u2014 the\n# nginx upstreams (deploy/nginx/conf.d/00-upstreams.conf) point at them.\n# Use `okcms deploy` to pick this mode, or blue/green for zero-downtime.\n#\n# Network okcms-net is EXTERNAL (created by docker-compose.infra.yml), so\n# `down` of this stack never touches postgres, redis or the proxy.\n\nx-app: &app\n image: okcms/app:${OKCMS_VERSION:-latest}\n build:\n context: .\n dockerfile: docker/Dockerfile\n env_file:\n - .env\n restart: unless-stopped\n networks: [okcms]\n environment:\n NODE_ENV: production\n DB_HOST: postgres\n REDIS_HOST: redis\n volumes:\n - ./plugins:/app/plugins\n - ./themes:/app/themes\n - storage-data:/app/.data/storage\n - cache-data:/app/.data/cache\n\nx-api-health: &api-health\n test:\n - CMD\n - bun\n - -e\n - \"fetch('http://127.0.0.1:'+(process.env.PORT||3000)+'/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\"\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 25s\n\nx-web-health: &web-health\n test:\n - CMD\n - bun\n - -e\n - \"fetch('http://127.0.0.1:'+(process.env.WEB_PORT||3001)+'/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\"\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 25s\n\nx-admin-health: &admin-health\n # the admin is an Astro standalone: it serves / and has no /health endpoint\n test:\n - CMD\n - bun\n - -e\n - \"fetch('http://127.0.0.1:'+(process.env.PORT||3011)+'/').then(r=>process.exit(r.status<500?0:1)).catch(()=>process.exit(1))\"\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 30s\n\nservices:\n api:\n <<: *app\n container_name: okcms-api\n command: [\"api\"]\n labels:\n okcms.role: edge\n okcms.service: api\n healthcheck: *api-health\n\n web:\n <<: *app\n container_name: okcms-web\n command: [\"web\"]\n labels:\n okcms.role: edge\n okcms.service: web\n healthcheck: *web-health\n\n # the admin reads `PORT` (astro standalone), not `ADMIN_PORT`: a service\n # level environment replaces the merged anchor one, so it is repeated here.\n admin:\n <<: *app\n container_name: okcms-admin\n command: [\"admin\"]\n environment:\n NODE_ENV: production\n DB_HOST: postgres\n REDIS_HOST: redis\n PORT: ${ADMIN_PORT:-3011}\n UPLOAD_DIR: /app/.data/storage\n labels:\n okcms.role: edge\n okcms.service: admin\n healthcheck: *admin-health\n\n worker:\n <<: *app\n container_name: okcms-worker\n command: [\"worker\"]\n stop_grace_period: 30s\n labels:\n okcms.role: worker\n okcms.service: worker\n\nnetworks:\n okcms:\n name: okcms-net\n external: true\n\nvolumes:\n # same names as the lanes: media survives switching deploy modes\n storage-data:\n name: okcms-storage\n cache-data:\n name: okcms-cache\n";
|
|
47
47
|
/**
|
|
48
48
|
* Roteamento production. Os upstreams ficam em arquivo SEPARADO
|
|
49
49
|
* (`00-upstreams.conf`) justamente para que o swap seja uma reescrita de um
|
package/dist/assets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAaA,2DAA2D;AAC3D,eAAO,MAAM,YAAY;;;;;;;CAOf,CAAC;AAMX;;;;GAIG;AACH,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAaA,2DAA2D;AAC3D,eAAO,MAAM,YAAY;;;;;;;CAOf,CAAC;AAMX;;;;GAIG;AACH,eAAO,MAAM,UAAU,65CAoCtB,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,aAAa,o2BAkCzB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,8hCA+DxB,CAAC;AAMF;;;;GAIG;AACH,eAAO,MAAM,aAAa,y3FA+FzB,CAAC;AAMF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,qgLAmM1B,CAAC;AAMF;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,kmGA2HvB,CAAC;AAMF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,8gLAgK1B,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,sBAAsB,EAAE,aAAqD,CAAC;AAE3F;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,GAAE,aAAsC,GAAG,MAAM,CAqBjG;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,GAAE,aAAsC,GAAG,MAAM,CAoB3F;AAMD,eAAO,MAAM,YAAY;;;;;;;;;CASf,CAAC;AAEX,yEAAyE;AACzE,eAAO,MAAM,eAAe,qCAAqC,CAAC;AAElE,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,UAM5B,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CAU1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,IAAI,GAAE,IAAa,EACnB,KAAK,GAAE,aAAsC,GAC5C,YAAY,EAAE,CAWhB"}
|
package/dist/assets.js
CHANGED
|
@@ -40,6 +40,7 @@ export const DOCKERFILE = `# syntax=docker/dockerfile:1
|
|
|
40
40
|
FROM oven/bun:1-alpine AS base
|
|
41
41
|
WORKDIR /app
|
|
42
42
|
ENV NODE_ENV=production
|
|
43
|
+
ENV UPLOAD_DIR=/app/.data/storage
|
|
43
44
|
|
|
44
45
|
# --- dependencies -----------------------------------------------------------
|
|
45
46
|
# Manifest + lock first: changing just the code does not invalidate
|
|
@@ -320,6 +321,7 @@ x-app: &app
|
|
|
320
321
|
NODE_ENV: production
|
|
321
322
|
DB_HOST: postgres
|
|
322
323
|
REDIS_HOST: redis
|
|
324
|
+
UPLOAD_DIR: /app/.data/storage
|
|
323
325
|
volumes:
|
|
324
326
|
- ./plugins:/app/plugins
|
|
325
327
|
- ./themes:/app/themes
|
|
@@ -417,6 +419,7 @@ services:
|
|
|
417
419
|
DB_HOST: postgres
|
|
418
420
|
REDIS_HOST: redis
|
|
419
421
|
PORT: \${ADMIN_PORT:-3011}
|
|
422
|
+
UPLOAD_DIR: /app/.data/storage
|
|
420
423
|
labels:
|
|
421
424
|
okcms.role: edge
|
|
422
425
|
okcms.lane: blue
|
|
@@ -432,6 +435,7 @@ services:
|
|
|
432
435
|
DB_HOST: postgres
|
|
433
436
|
REDIS_HOST: redis
|
|
434
437
|
PORT: \${ADMIN_PORT:-3011}
|
|
438
|
+
UPLOAD_DIR: /app/.data/storage
|
|
435
439
|
labels:
|
|
436
440
|
okcms.role: edge
|
|
437
441
|
okcms.lane: green
|
|
@@ -583,6 +587,7 @@ services:
|
|
|
583
587
|
DB_HOST: postgres
|
|
584
588
|
REDIS_HOST: redis
|
|
585
589
|
PORT: \${ADMIN_PORT:-3011}
|
|
590
|
+
UPLOAD_DIR: /app/.data/storage
|
|
586
591
|
labels:
|
|
587
592
|
okcms.role: edge
|
|
588
593
|
okcms.service: admin
|
package/dist/assets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,iEAAiE;AACjE,EAAE;AACF,+EAA+E;AAC/E,sEAAsE;AACtE,+DAA+D;AAC/D,EAAE;AACF,2EAA2E;AAC3E,qEAAqE;AAErE,2DAA2D;AAC3D,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE,kCAAkC;IAC9C,UAAU,EAAE,qCAAqC;IACjD,YAAY,EAAE,qCAAqC;IACnD,YAAY,EAAE,iDAAiD;IAC/D,aAAa,EAAE,kDAAkD;IACjE,aAAa,EAAE,sDAAsD;CAC7D,CAAC;AAEX,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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"}
|
package/dist/pm2.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pm2.d.ts","sourceRoot":"","sources":["../src/pm2.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"pm2.d.ts","sourceRoot":"","sources":["../src/pm2.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA6DjD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AA2BD,wBAAsB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiGvE"}
|
package/dist/pm2.js
CHANGED
|
@@ -19,13 +19,23 @@ import { defaultRunner } from './docker.js';
|
|
|
19
19
|
const PM2_ECOSYSTEM_TEMPLATE = `// ecosystem.config.js — generated by okcms deploy (PM2)
|
|
20
20
|
// Edit as needed and run: pm2 reload all
|
|
21
21
|
|
|
22
|
+
const path = require('node:path');
|
|
23
|
+
let storagePath = process.env.STORAGE_LOCAL_PATH || '.data/storage';
|
|
24
|
+
try {
|
|
25
|
+
const project = require('./okcms.config.json');
|
|
26
|
+
storagePath = project.storage?.localPath || storagePath;
|
|
27
|
+
} catch {
|
|
28
|
+
// The default keeps projects without okcms.config.json working.
|
|
29
|
+
}
|
|
30
|
+
const uploadDir = path.isAbsolute(storagePath) ? storagePath : path.resolve(__dirname, storagePath);
|
|
31
|
+
|
|
22
32
|
module.exports = {
|
|
23
33
|
apps: [
|
|
24
34
|
{
|
|
25
35
|
name: 'okcms-api',
|
|
26
36
|
script: 'bunx',
|
|
27
37
|
args: '@oktis-works/api',
|
|
28
|
-
env: { NODE_ENV: 'production', PORT: 3000 },
|
|
38
|
+
env: { NODE_ENV: 'production', PORT: 3000, UPLOAD_DIR: uploadDir },
|
|
29
39
|
instances: 1,
|
|
30
40
|
autorestart: true,
|
|
31
41
|
watch: false,
|
|
@@ -35,7 +45,7 @@ module.exports = {
|
|
|
35
45
|
name: 'okcms-admin',
|
|
36
46
|
script: 'bunx',
|
|
37
47
|
args: '@oktis-works/admin',
|
|
38
|
-
env: { NODE_ENV: 'production', PORT: 3011 },
|
|
48
|
+
env: { NODE_ENV: 'production', PORT: 3011, PUBLIC_API_URL: process.env.PUBLIC_API_URL || 'http://localhost:3000' },
|
|
39
49
|
instances: 1,
|
|
40
50
|
autorestart: true,
|
|
41
51
|
watch: false,
|
|
@@ -55,7 +65,7 @@ module.exports = {
|
|
|
55
65
|
name: 'okcms-worker',
|
|
56
66
|
script: 'bunx',
|
|
57
67
|
args: '@oktis-works/worker',
|
|
58
|
-
env: { NODE_ENV: 'production', WORKER_MODE: 'pm2' },
|
|
68
|
+
env: { NODE_ENV: 'production', WORKER_MODE: 'pm2', UPLOAD_DIR: uploadDir },
|
|
59
69
|
instances: 1,
|
|
60
70
|
autorestart: true,
|
|
61
71
|
watch: false,
|
package/dist/pm2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pm2.js","sourceRoot":"","sources":["../src/pm2.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,EAAE;AACF,4EAA4E;AAC5E,oDAAoD;AACpD,EAAE;AACF,kDAAkD;AAClD,sEAAsE;AACtE,6DAA6D;AAC7D,+DAA+D;AAC/D,wEAAwE;AACxE,4CAA4C;AAC5C,EAAE;AACF,6EAA6E;AAC7E,kEAAkE;AAElE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAe,MAAM,aAAa,CAAC;AAIzD,MAAM,sBAAsB,GAAG
|
|
1
|
+
{"version":3,"file":"pm2.js","sourceRoot":"","sources":["../src/pm2.ts"],"names":[],"mappings":"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"}
|
package/dist/start.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAyCA,wBAAsB,YAAY,CAAC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAyCA,wBAAsB,YAAY,CAAC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DtF"}
|
package/dist/start.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @oktis-works/cms - Project Start (API + Admin + Web)
|
|
2
2
|
import { spawn } from 'node:child_process';
|
|
3
|
-
import { join } from 'node:path';
|
|
3
|
+
import { isAbsolute, join, resolve } from 'node:path';
|
|
4
4
|
import { loadEnvFile } from './env-file.js';
|
|
5
5
|
import { loadProjectConfig } from './project-config.js';
|
|
6
6
|
import { clearPids, recordPid } from './runtime-state.js';
|
|
@@ -44,11 +44,17 @@ export async function startProject(options = {}) {
|
|
|
44
44
|
const includeWeb = defaultAll || options['web'] !== undefined || options['all'] !== undefined;
|
|
45
45
|
const includeWorker = defaultAll || options['worker'] !== undefined || options['all'] !== undefined;
|
|
46
46
|
process.env['ACTIVE_THEME'] = config.activeTheme || process.env['ACTIVE_THEME'] || '';
|
|
47
|
+
const mediaEnv = {};
|
|
48
|
+
if (config.storage.driver === 'local') {
|
|
49
|
+
mediaEnv['UPLOAD_DIR'] = process.env['UPLOAD_DIR'] || (isAbsolute(config.storage.localPath ?? '')
|
|
50
|
+
? config.storage.localPath
|
|
51
|
+
: resolve(process.cwd(), config.storage.localPath ?? '.data/storage'));
|
|
52
|
+
}
|
|
47
53
|
if (onlyApi) {
|
|
48
|
-
spawnApp('api', 'bunx', ['@oktis-works/api'], { PORT: String(config.ports.api) });
|
|
54
|
+
spawnApp('api', 'bunx', ['@oktis-works/api'], { PORT: String(config.ports.api), ...mediaEnv });
|
|
49
55
|
}
|
|
50
56
|
else {
|
|
51
|
-
spawnApp('api', 'bunx', ['@oktis-works/api'], { PORT: String(config.ports.api) });
|
|
57
|
+
spawnApp('api', 'bunx', ['@oktis-works/api'], { PORT: String(config.ports.api), ...mediaEnv });
|
|
52
58
|
if (includeAdmin) {
|
|
53
59
|
// Empty PUBLIC_API_URL must not make the Admin call itself on :3011.
|
|
54
60
|
// This also keeps `okcms start` consistent across WSL, Linux and Windows.
|
|
@@ -62,7 +68,7 @@ export async function startProject(options = {}) {
|
|
|
62
68
|
if (includeWorker) {
|
|
63
69
|
// Filas/jobs (bullmq) — REDIS_* vem do .env do projeto. Sem Redis, o
|
|
64
70
|
// worker só loga erros de conexão; os demais apps seguem rodando.
|
|
65
|
-
spawnApp('worker', 'bunx', ['@oktis-works/worker'],
|
|
71
|
+
spawnApp('worker', 'bunx', ['@oktis-works/worker'], mediaEnv);
|
|
66
72
|
}
|
|
67
73
|
}
|
|
68
74
|
const shutdown = () => {
|
package/dist/start.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
|