Base del despliegue

This commit is contained in:
2026-05-04 16:29:27 +02:00
parent f1029da55b
commit 54745a7025
10 changed files with 459 additions and 1 deletions

View File

@@ -0,0 +1,17 @@
FROM node:22-alpine
WORKDIR /home/node/app
COPY ./package.json ./
COPY ./dist ./dist
COPY tsconfig.json ./
COPY ./deployment/database/migrations ./deployment/database/migrations
COPY ./deployment/develop/start.sh ./
RUN npm config set @sf-alvar:registry https://git.savefamilygps.net/api/packages/SaveFamily/npm/ &&\
npm install &&\
chmod +x start.sh
EXPOSE ${PORT}
ENTRYPOINT [ "./start.sh" ]

View File

@@ -0,0 +1,50 @@
name: sf-monitorizacion-health
networks:
savefamily:
external: true
proxy:
external: true
internal:
driver: bridge
services:
sf-monitorizacion-health:
container_name: sf-monitorizacion-health
image: sf-monitorizacion-health
build:
context: .
dockerfile: Dockerfile
args:
PORT: "${PORT:-3000}"
ports:
- ${PORT}:${PORT}
networks:
- internal
- savefamily
- proxy
env_file:
- .env
restart: unless-stopped
healthcheck:
test:
[
"CMD-SHELL",
"wget -q --spider http://127.0.0.1:${PORT:-3000}/health || exit 1",
]
interval: 60s
timeout: 5s
retries: 5
start_period: 15s
labels:
- "io.portainer.accesscontrol.teams=develop"
- "traefik.enable=true"
- "traefik.http.routers.sf-monitorizacion-health.entrypoints=web"
- "traefik.http.routers.sf-monitorizacion-health.rule=Host(`sf-monitorizacion-health.savefamilygps.net`)"
- "traefik.http.middlewares.sf-monitorizacion-health-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.sf-monitorizacion-health.middlewares=sf-monitorizacion-health-https-redirect"
- "traefik.http.routers.sf-monitorizacion-health-secure.entrypoints=websecure"
- "traefik.http.routers.sf-monitorizacion-health-secure.rule=Host(`sf-monitorizacion-health.savefamilygps.net`)"
- "traefik.http.routers.sf-monitorizacion-health-secure.tls=true"
- "traefik.http.routers.sf-monitorizacion-health-secure.service=sf-monitorizacion-health"
- "traefik.http.services.sf-monitorizacion-health.loadbalancer.server.port=${PORT}"
- "traefik.docker.network=proxy"

View File

@@ -0,0 +1,109 @@
#!/usr/bin/env groovy
String BASE_REMOTE_PATH = "//home/devops"
String APP_REMOTE_PATH = "//mnt/docker-storage/containers/savefamily/sf-monitorizacion-health"
// Muchos paths son mas simples, hay que cambiar movimientos de archivos
pipeline {
agent any
tools { nodejs "22.15.0" }
environment {
GENERAL_CHANGES = "false"
}
stages {
stage('📦 Install dependencies') {
steps {
sh 'npm install'
}
}
stage("🧱 Building") {
steps {
sh 'npm run build:esbuild'
}
}
stage("🏗 Deploying") {
steps {
sshPublisher(
publishers: [
sshPublisherDesc(
verbose: true,
configName: "Save Family",
transfers: [
sshTransfer(
cleanRemote: false,
execCommand: "mkdir -p $APP_REMOTE_PATH"
),
sshTransfer(
cleanRemote: false,
execCommand: "ln -sf $BASE_REMOTE_PATH/vault/savefamily/sf-monitorizacion-health/.env $APP_REMOTE_PATH/.env"
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "docs/**/*",
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "deployment/develop/**/*",
removePrefix:"deployment/develop",
excludes: "deployment/develop/docker"
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "deployment/develop/docker/**/*",
removePrefix:"deployment/develop/docker"
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "deployment/database/**/*",
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "package.json",
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "src/**/*"
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "dist/**/*"
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "tsconfig.json"
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "package-lock.json",
),
sshTransfer(
cleanRemote: false,
execCommand: "sh $APP_REMOTE_PATH/rebuild.sh"
)
]
)
]
)
}
}
}
post {
failure {
echo '👎🏼 Processing failed'
}
success {
echo '👍🏼 Processing success'
}
}
}

View File

@@ -0,0 +1,9 @@
#!/bin/sh
cd /mnt/docker-storage/containers/savefamily/sf-monitorizacion-health
docker compose -f docker-compose.yaml down || echo "Error parando servidor"
docker rm sf-monitorizacion-health || echo "Error eliminando contenedor antiguo"
docker rmi sf-monitorizacion-health || echo "Error eliminando (rmi) contenedor antiguo"
docker compose -f docker-compose.yaml up --build -d

View File

@@ -0,0 +1,6 @@
#!/bin/sh
cd /home/node/app
echo "Lanzando migraciones e iniciando servidor"
# npm config set @sf-alvar:registry https://git.savefamilygps.net/api/packages/SaveFamily/npm/ #npm install
npm run migrate
npm run start