Created deployment

This commit is contained in:
2026-02-10 16:10:27 +01:00
parent a9cde211eb
commit 759f35654b
8 changed files with 207 additions and 4 deletions

View File

@@ -0,0 +1,10 @@
# --- Release image ---
FROM node:22-alpine AS release
ARG PORT
WORKDIR /home/node/app
COPY ./src ./src
COPY ./package.json ./
COPY ./package-lock.json ./
RUN npm ci
EXPOSE $PORT
ENTRYPOINT ["node", "src/apps/index.js"]

View File

@@ -0,0 +1,86 @@
name: sim-eventos
networks:
savefamily:
external: true
proxy:
external: true
services:
rabbitmq-sim-broker:
container_name: rabbitmq-sim-broker
image: "rabbitmq:4.2.2-management"
expose:
- 5672
- 15672
env_file:
- ./.env
restart: unless-stopped
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "check_port_connectivity"]
interval: 10s
timeout: 5s
retries: 5
environment:
RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD}
volumes:
- ./rabbitmq_plugins/enabled_plugins:/etc/rabbitmq/enabled_plugins:ro
- ./rabbit/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro
- ./rabbit/definitions.json:/etc/rabbitmq/definitions.json:ro
labels:
- "io.portainer.accesscontrol.teams=develop"
sf-sims-api:
container_name: sf-sims-api
build:
context: .
dockerfile: Dockerfile
args:
PORT: ${PORT:-3000}
image: sf-sims-api
env_file:
- ./.env
restart: unless-stopped
depends_on:
rabbitmq-sim-broker:
condition: service_healthy
postgresql-sim:
condition: service_healthy
networks:
- savefamily
- proxy
expose:
- ${PORT}
labels:
- "io.portainer.accesscontrol.teams=develop"
- "traefik.enable=true"
- "traefik.http.routers.sf-sims.entrypoints=web"
- "traefik.http.routers.sf-sims.rule=Host(`sf-sims.savefamilygps.net`)"
- "traefik.http.middlewares.sf-sims-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.sf-sims.middlewares=sf-sims-https-redirect"
- "traefik.http.routers.sf-sims-secure.entrypoints=websecure"
- "traefik.http.routers.sf-sims-secure.rule=Host(`sf-sims.savefamilygps.net`)"
- "traefik.http.routers.sf-sims-secure.tls=true"
- "traefik.http.routers.sf-sims-secure.service=sf-sims"
- "traefik.http.routers.sf-sims-secure.tls.certresolver=myresolver"
- "traefik.http.routers.sf-sims-secure.middlewares=tailscale-ipwhitelist@file"
- "traefik.http.services.sf-sims.loadbalancer.server.port=${PORT}"
- "traefik.docker.network=proxy"
postgresql-sim:
image: postgres:16.1
env_file:
- ./.env
ports:
- 5432
volumes:
- ./postgres:/var/lib/postgres/data
- ./database/init.sql:/docker-entrypoint-initdb.d/init.sql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
retries: 5
start_period: 5s
timeout: 5s
labels:
- "io.portainer.accesscontrol.teams=develop"

View File

@@ -0,0 +1,9 @@
#!/bin/bash
cd /mnt/docker-storage/containers/savefamily/sf-sims
docker stop sf-sims-api || true
docker rm sf-sims-api || true
docker rmi sf-sims-api || true
docker compose -f docker-compose.yaml up --build -d sf-sims-api

View File

@@ -0,0 +1,98 @@
#!/usr/bin/env groovy
String BASE_REMOTE_PATH = "//home/devops"
String APP_REMOTE_PATH = "//mnt/docker-storage/containers/savefamily/sf-sims"
pipeline {
agent any
tools { nodejs "22.15.0" }
environment {
GENERAL_CHANGES = "false"
}
stages {
stage("🧱 Building") {
sh 'yarn run build'
}
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-sims/.env $APP_REMOTE_PATH/.env"
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "dist/**/*"
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "deployment/database/**/*",
removePrefix: "deployment",
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "deployment/rabbit/**/*",
removePrefix: "deployment",
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "rabbitmq_plugins/**/*"
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "deployment/develop/docker/**/*",
removePrefix: "deployment/develop/docker",
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "deployment/Dockerfile",
removePrefix: "deployment",
),
sshTransfer(
cleanRemote: false,
remoteDirectory: "$APP_REMOTE_PATH",
sourceFiles: "package.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

@@ -43,4 +43,4 @@
"tsx": "^4.21.0",
"vitest": "^4.0.16"
}
}
}

View File

@@ -73,4 +73,4 @@
"tsx": "*",
"vitest": "*"
}
}
}

View File

@@ -73,4 +73,4 @@
"tsx": "*",
"vitest": "*"
}
}
}

View File

@@ -57,4 +57,4 @@
"tsx": "*",
"vitest": "*"
}
}
}