Conectar SAP CAP con PostgreSQL en Docker

Si estás trabajando con SAP CAP y quieres usar PostgreSQL en lugar de SQLite, este post es para ti. Te voy a explicar paso a paso cómo conectar tu aplicación CAP con una base de datos PostgreSQL corriendo en Docker. Requisitos previos Antes de empezar, asegúrate de tener instalado: Node.js y el framework @sap/cds Docker y Docker Compose Un editor (VS Code) Si no tienes SAP CAP, instálalo con: npm install -g @sap/cds-dk Ahora que estás listo, vamos a levantar PostgreSQL con Docker. Levantando PostgreSQL con Docker Vamos a crear un docker-compose.yml para lanzar PostgreSQL: version: '3' services: postgres: image: postgres:latest container_name: cap_postgres restart: always environment: POSTGRES_USER: cap_user POSTGRES_PASSWORD: cap_pass POSTGRES_DB: cap_database ports: - "5432:5432" Guarda este archivo y ejecuta: docker-compose up -d Esto va a levantar un contenedor con PostgreSQL corriendo en el puerto 5432. Instalando el driver de PostgreSQL en SAP CAP Ahora, toca decirle a CAP que vamos a usar PostgreSQL en lugar de la base de datos por defecto. Para eso, instalamos el driver: npm install @cap-js/postgres Configurando la conexión en package.json Edita el archivo package.json y agrégale esto dentro de la sección cds.requires: "cds": { "requires": { "db": { "kind": "postgres", "credentials": { "host": "localhost", "port": 5432, "database": "cap_database", "user": "cap_user", "password": "cap_pass" } } } } Esto le dice a CAP que la base de datos es PostgreSQL y le pasamos las credenciales. Acuerdate de: https://cap.cloud.sap/docs/node.js/cds-env Creando la base de datos en CAP Ejecuta este comando para desplegar el esquema en PostgreSQL: cds deploy --to postgres si todo sale bien, verás algo como "Successfully deployed to PostgreSQL". Ya tienes SAP CAP corriendo con PostgreSQL en Docker. Ahora puedes aprovechar PostgreSQL en tus proyectos CAP sin problemas.

Mar 9, 2025 - 14:30
 0
Conectar SAP CAP con PostgreSQL en Docker

Si estás trabajando con SAP CAP y quieres usar PostgreSQL en lugar de SQLite, este post es para ti. Te voy a explicar paso a paso cómo conectar tu aplicación CAP con una base de datos PostgreSQL corriendo en Docker.

Requisitos previos

Antes de empezar, asegúrate de tener instalado:

  1. Node.js y el framework @sap/cds
  2. Docker y Docker Compose
  3. Un editor (VS Code)

Si no tienes SAP CAP, instálalo con:

npm install -g @sap/cds-dk

Ahora que estás listo, vamos a levantar PostgreSQL con Docker.
Levantando PostgreSQL con Docker

Vamos a crear un docker-compose.yml para lanzar PostgreSQL:

version: '3'
services:
  postgres:
    image: postgres:latest
    container_name: cap_postgres
    restart: always
    environment:
      POSTGRES_USER: cap_user
      POSTGRES_PASSWORD: cap_pass
      POSTGRES_DB: cap_database
    ports:
      - "5432:5432"

Guarda este archivo y ejecuta:

docker-compose up -d

Esto va a levantar un contenedor con PostgreSQL corriendo en el puerto 5432.

Instalando el driver de PostgreSQL en SAP CAP

Ahora, toca decirle a CAP que vamos a usar PostgreSQL en lugar de la base de datos por defecto. Para eso, instalamos el driver:

npm install @cap-js/postgres

Configurando la conexión en package.json

Edita el archivo package.json y agrégale esto dentro de la sección cds.requires:

"cds": {
  "requires": {
    "db": {
      "kind": "postgres",
      "credentials": {
        "host": "localhost",
        "port": 5432,
        "database": "cap_database",
        "user": "cap_user",
        "password": "cap_pass"
      }
    }
  }
}

Esto le dice a CAP que la base de datos es PostgreSQL y le pasamos las credenciales.
Acuerdate de: https://cap.cloud.sap/docs/node.js/cds-env

Creando la base de datos en CAP

Ejecuta este comando para desplegar el esquema en PostgreSQL:

cds deploy --to postgres

si todo sale bien, verás algo como "Successfully deployed to PostgreSQL".

Ya tienes SAP CAP corriendo con PostgreSQL en Docker. Ahora puedes aprovechar PostgreSQL en tus proyectos CAP sin problemas.