Add Docker deployment configuration and CI/CD pipeline
Some checks failed
build-and-deploy / build (push) Failing after 25s
build-and-deploy / deploy (push) Has been skipped

This commit is contained in:
2025-08-04 13:51:09 -06:00
parent 5e4256cdc5
commit f0ed200577
5 changed files with 155 additions and 1 deletions

32
.dockerignore Normal file
View File

@@ -0,0 +1,32 @@
node_modules
npm-debug.log
.git
.gitignore
README.md
.env*
.nyc_output
coverage
.vscode
.idea
*.swp
*.swo
*~
.DS_Store
Thumbs.db
music/
*.mp3
*.wav
*.flac
*.m4a
*.ogg
*.aac
.output
.nuxt
.cache
dist
logs
*.log
.tmp
.parcel-cache
docker-compose*.yml
Dockerfile*

View File

@@ -0,0 +1,46 @@
name: build-and-deploy
on:
push:
branches: [ main ]
jobs:
#───────────────── build & push ─────────────────
build:
runs-on: docker
env:
REG: gitea.nucleoriofrio.com/nucleo000
steps:
- uses: actions/checkout@v3
- uses: docker/setup-buildx-action@v2
- uses: docker/login-action@v2
with:
registry: gitea.nucleoriofrio.com
username: nucleo000
password: 7bc7b2fcd283bd6a251bef3ede368b7f897c919d
- name: Build+push repodructor
run: |
docker build -t $REG/repodructor:${{ github.sha }} -t $REG/repodructor:latest .
docker push $REG/repodructor:${{ github.sha }}
docker push $REG/repodructor:latest
#───────────────── deploy ─────────────────
deploy:
needs: build
runs-on: docker
env:
REG: gitea.nucleoriofrio.com/nucleo000
steps:
- uses: actions/checkout@v3
- name: Login to registry
run: docker login gitea.nucleoriofrio.com -u nucleo000 -p 7bc7b2fcd283bd6a251bef3ede368b7f897c919d
- name: Pull fresh images used in compose
run: docker compose pull
- name: Clean up stack
run: docker compose --project-name repodructor down
- name: Update stack
run: docker compose --project-name repodructor up -d --remove-orphans --wait

14
.gitignore vendored
View File

@@ -88,3 +88,17 @@ music/
# PWA files # PWA files
sw.js sw.js
workbox-*.js workbox-*.js
# Docker and deployment
.env*
docker-compose.override.yml
.dockerignore
# SSL certificates
*.pem
*.crt
*.key
# Production secrets
secrets/
credentials/

33
Dockerfile Normal file
View File

@@ -0,0 +1,33 @@
# Build stage
FROM node:18-alpine AS builder
WORKDIR /app
# Copy package files
COPY package*.json ./
# Install dependencies
RUN npm ci --only=production
# Copy source code
COPY . .
# Build the application
RUN npm run build
# Production stage
FROM node:18-alpine AS production
WORKDIR /app
# Copy built application from builder stage
COPY --from=builder /app/.output ./
# Create music directory for volume mounting
RUN mkdir -p /app/public/music
# Expose port
EXPOSE 3000
# Start the application
CMD ["node", "server/index.mjs"]

29
docker-compose.yml Normal file
View File

@@ -0,0 +1,29 @@
version: '3.8'
services:
repodructor:
image: gitea.nucleoriofrio.com/nucleo000/repodructor:latest
container_name: repodructor
restart: unless-stopped
volumes:
- type: volume
source: nas-music
target: /app/public/music
read_only: true
environment:
- NODE_ENV=production
- NUXT_HOST=0.0.0.0
- NUXT_PORT=3000
networks:
- principal
volumes:
nas-music:
driver_opts:
type: cifs
o: username=nucleo000,password=${NAS_PASSWORD},addr=memoria.interno.com
device: //memoria.interno.com/homes/nucleo000/musik
networks:
principal:
external: true