fase 1
Build and Push Frontend / Construir y Subir Imagen (push) Successful in 9m23s
Build and Push Medusa / Construir y publicar Medusa (push) Failing after 15m12s

This commit is contained in:
2026-07-31 23:27:01 -05:00
parent 4b85fccc97
commit aa857bc2ae
22 changed files with 1450 additions and 19 deletions
+10
View File
@@ -0,0 +1,10 @@
node_modules
.medusa
.cache
.git
.env
.env.*
npm-debug.log*
README.md
data
migration
+3
View File
@@ -0,0 +1,3 @@
fund=false
audit=false
legacy-peer-deps=true
+39
View File
@@ -0,0 +1,39 @@
# syntax=docker/dockerfile:1.7
FROM node:22.18.0-bookworm-slim AS builder
WORKDIR /app
ENV CI=true
ENV NODE_ENV=development
ENV NPM_CONFIG_UPDATE_NOTIFIER=false
COPY package.json .npmrc ./
RUN --mount=type=cache,target=/root/.npm,sharing=locked \
npm install --no-audit --no-fund
COPY tsconfig.json medusa-config.ts ./
COPY src ./src
RUN npm run build
FROM node:22.18.0-bookworm-slim AS runtime
WORKDIR /app
ENV NODE_ENV=production
ENV PORT=9000
ENV NPM_CONFIG_UPDATE_NOTIFIER=false
COPY --from=builder /app/.medusa/server/package.json ./
RUN --mount=type=cache,target=/root/.npm,sharing=locked \
npm install --omit=dev --no-audit --no-fund
COPY --from=builder /app/.medusa/server ./
RUN chown -R node:node /app
USER node
EXPOSE 9000
CMD ["npx", "medusa", "start"]
+20
View File
@@ -0,0 +1,20 @@
# ARI Shopping Commerce Backend
Backend Medusa v2.18 para la Fase 1.
## Capacidades iniciales
- Medusa Admin en `/app`.
- Catálogo, variantes y precios.
- Imágenes en almacenamiento S3 compatible.
- PostgreSQL y Redis externos.
- Modo `shared` para una sola réplica durante la Fase 1.
- Migraciones ejecutadas por el `initContainer` de Kubernetes.
La imagen se construye mediante:
```text
.gitea/workflows/build-medusa.yaml
```
No se deben colocar secretos en este directorio.
@@ -0,0 +1,66 @@
import { defineConfig, loadEnv } from "@medusajs/framework/utils"
loadEnv(process.env.NODE_ENV || "development", process.cwd())
const required = (name: string): string => {
const value = process.env[name]
if (!value) {
throw new Error(`La variable ${name} es obligatoria.`)
}
return value
}
module.exports = defineConfig({
projectConfig: {
databaseUrl: required("DATABASE_URL"),
redisUrl: required("REDIS_URL"),
workerMode: (process.env.MEDUSA_WORKER_MODE || "shared") as
| "shared"
| "worker"
| "server",
http: {
storeCors: required("STORE_CORS"),
adminCors: required("ADMIN_CORS"),
authCors: required("AUTH_CORS"),
jwtSecret: required("JWT_SECRET"),
cookieSecret: required("COOKIE_SECRET"),
},
},
admin: {
disable: process.env.DISABLE_MEDUSA_ADMIN === "true",
backendUrl:
process.env.MEDUSA_BACKEND_URL ||
"https://commerce.cruzcloud.net",
storefrontUrl:
process.env.STOREFRONT_URL ||
"https://shop.cruzcloud.net",
},
modules: [
{
resolve: "@medusajs/medusa/file",
options: {
providers: [
{
resolve: "@medusajs/medusa/file-s3",
id: "s3",
options: {
file_url: required("S3_FILE_URL"),
access_key_id: required("S3_ACCESS_KEY_ID"),
secret_access_key: required("S3_SECRET_ACCESS_KEY"),
region: process.env.S3_REGION || "us-east-1",
bucket: required("S3_BUCKET"),
endpoint: required("S3_ENDPOINT"),
cache_control:
"public, max-age=31536000, immutable",
additional_client_config: {
forcePathStyle: true,
},
},
},
],
},
},
],
})
+32
View File
@@ -0,0 +1,32 @@
{
"name": "ari-shopping-commerce-backend",
"version": "1.0.0",
"private": true,
"description": "Backend de catálogo dinámico ARI Shopping sobre Medusa v2.",
"license": "UNLICENSED",
"scripts": {
"build": "medusa build",
"start": "medusa start",
"dev": "medusa develop",
"predeploy": "medusa db:migrate"
},
"dependencies": {
"@medusajs/admin-sdk": "2.18.0",
"@medusajs/cli": "2.18.0",
"@medusajs/framework": "2.18.0",
"@medusajs/medusa": "2.18.0"
},
"devDependencies": {
"@swc/core": "^1.7.28",
"@types/node": "^20.12.11",
"@types/react": "^18.3.2",
"@types/react-dom": "^18.2.25",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"typescript": "^5.6.2",
"vite": "^5.4.14"
},
"engines": {
"node": ">=20"
}
}
+35
View File
@@ -0,0 +1,35 @@
{
"compilerOptions": {
"target": "ES2021",
"esModuleInterop": true,
"module": "Node16",
"moduleResolution": "Node16",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"declaration": false,
"sourceMap": false,
"inlineSourceMap": true,
"outDir": "./.medusa/server",
"rootDir": "./",
"jsx": "react-jsx",
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"checkJs": false,
"strictNullChecks": true
},
"ts-node": {
"swc": true
},
"include": [
"**/*",
".medusa/types/*"
],
"exclude": [
"node_modules",
".medusa/server",
".medusa/admin",
".cache"
]
}