installazione prenotazionibackend2
Some checks failed
Deploy to VPS / build (push) Failing after 15s
Deploy to VPS / deploy (push) Has been skipped

This commit is contained in:
AV77web 2026-07-03 16:32:08 +02:00
commit f805acab03
7 changed files with 1854 additions and 0 deletions

46
.github/workflows/deploy.yml vendored Normal file
View file

@ -0,0 +1,46 @@
name: Deploy to VPS
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: https://github.com/actions/checkout@v4
- name: Setup Node.js
uses: https://github.com/actions/setup-node@v4
with:
node-version: "20"
- name: Install dependencies
run: npm ci --prefer-offline
- name: Build
run: npm run build
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: https://github.com/actions/checkout@v4
- name: Deploy via SSH
uses: https://github.com/appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USER }}
key: ${{ secrets.VPS_SSH_KEY }}
script: |
echo "START DEPLOY"
cd /root/prenotazionibackend2
git pull --ff-only
docker compose up -d --build

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
node_modules/
dist/
.env

56
docker-compose.yml Normal file
View file

@ -0,0 +1,56 @@
services:
app:
build:
context: .
dockerfile: dockerfile/Dockerfile
container_name: prenotazionibackend2
restart: unless-stopped
env_file:
- .env
environment:
NODE_ENV: production
DB_HOST: mysql
DB_PORT: 3308
PORT: 3007
FRONTEND_URL: https://prenotazionifrontend2.andreavillari.it
AUTH_URL: https://prenotazionibackend2.andreavillari.it
AUTH_TRUST_HOST: "true"
ports:
- "127.0.0.1:3007:3007"
depends_on:
mysql:
condition: service_healthy
mysql:
image: mysql:8.0
container_name: mysql_prenotazioni2
restart: always
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- dbdata:/var/lib/mysql
- ./initdb:/docker-entrypoint-initdb.d # opzionale: script SQL iniziali
ports:
- "127.0.0.1:3308:3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 5s
timeout: 5s
retries: 10
phpmyadmin:
image: phpmyadmin:latest
container_name: phpmyadmin_prenotazioni2
restart: always
ports:
- "127.0.0.1:8085:80"
environment:
PMA_HOST: mysql
depends_on:
- mysql
volumes:
dbdata:

28
dockerfile/Dockerfile Normal file
View file

@ -0,0 +1,28 @@
# syntax=docker/dockerfile:1
ARG NODE_VERSION=20
FROM node:${NODE_VERSION}-slim AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY tsconfig.json tsconfig.build.json ./
COPY src ./src
RUN npm run build
FROM node:${NODE_VERSION}-slim AS runtime
WORKDIR /app
ENV NODE_ENV=production
ENV PORT=3001
COPY package*.json ./
RUN npm ci --omit=dev
COPY --from=build /app/dist ./dist
#COPY --from=build /app/src/openapi ./dist/openapi
EXPOSE 3001
CMD ["node", "dist/index.js"]

1678
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

27
package.json Normal file
View file

@ -0,0 +1,27 @@
{
"name": "prenotazionibackend2",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "ssh://git@forgejo.andreavillari.it:2222/andrea/prenotazionibackend2.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"@auth/express": "^0.12.2"
},
"devDependencies": {
"@types/bcryptjs": "^2.4.6",
"@types/cors": "^2.8.19",
"@types/express": "^5.0.6",
"@types/node": "^26.1.0",
"tsx": "^4.22.5",
"typescript": "^6.0.3"
}
}

16
tsconfig.json Normal file
View file

@ -0,0 +1,16 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCaslignInFileNames": true,
"resolveJsonModule": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}