Fix Docker: add nginx volume, simplify entrypoint

This commit is contained in:
2026-04-24 14:01:49 -03:00
parent b4f3e2ba7a
commit ae25a7c88f
3 changed files with 26 additions and 58 deletions
+12 -42
View File
@@ -1,61 +1,33 @@
#!/bin/bash
#!/usr/bin/env bash
set -e
echo "=== Starting MariaDB ==="
mysqld --user=mysql &
MYSQL_PID=$!
echo "Waiting for MariaDB to be ready..."
for i in {1..60}; do
if mysqladmin ping -h localhost --silent 2>/dev/null; then
echo "MariaDB is ready!"
break
fi
sleep 1
echo "Waiting for MariaDB..."
for i in $(seq 1 60); do
mysqladmin ping -h localhost --silent 2>/dev/null && break || sleep 1
done
DB_NAME="${DB_NAME:-hospital}"
echo "Creating database if not exists..."
mysql -h localhost -u root -e "CREATE DATABASE IF NOT EXISTS \`$DB_NAME\`;"
if [ -n "$DB_PASSWORD" ] && [ "$DB_PASSWORD" != "" ]; then
echo "Creating user and setting permissions..."
if [ -n "$DB_PASSWORD" ]; then
DB_USER="${DB_USER:-hospital}"
USER_EXISTS=$(mysql -h localhost -u root -N -e "SELECT COUNT(*) FROM mysql.user WHERE User='$DB_USER' AND Host='%';")
if [ "$USER_EXISTS" = "0" ]; then
mysql -h localhost -u root -e "CREATE USER '$DB_USER'@'%' IDENTIFIED BY '$DB_PASSWORD';"
mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'%';"
mysql -h localhost -u root -e "FLUSH PRIVILEGES;"
else
mysql -h localhost -u root -e "ALTER USER '$DB_USER'@'%' IDENTIFIED BY '$DB_PASSWORD';"
mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'%';"
mysql -h localhost -u root -e "FLUSH PRIVILEGES;"
fi
mysql -h localhost -u root -e "CREATE USER IF NOT EXISTS '$DB_USER'@'%' IDENTIFIED BY '$DB_PASSWORD'; GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'%'; FLUSH PRIVILEGES;"
fi
ADMIN_DNI="${ADMIN_DNI:-00000000}"
ADMIN_PASSWORD="${ADMIN_PASSWORD:-Admin123!}"
echo "Checking for admin user..."
TABLE_EXISTS=$(mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -N -e "SHOW TABLES LIKE 'usuarios';" 2>/dev/null || echo "")
TABLE_EXISTS=$(mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -N -e "SHOW TABLES LIKE 'usuarios';" 2>/dev/null || true)
if [ -n "$TABLE_EXISTS" ]; then
USER_COUNT=$(mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -N -e "SELECT COUNT(*) FROM usuarios WHERE dni='$ADMIN_DNI';" 2>/dev/null || echo "0")
if [ "$USER_COUNT" = "0" ]; then
echo "Creating initial admin user..."
ADMIN_ID=$(cat /proc/sys/kernel/random/uuid)
ADMIN_ID=$(uuidgen)
TODAY=$(date +%Y-%m-%d)
# Hash password using bcryptjs via node
HASH=$(node -e "const bcrypt = require('bcryptjs'); console.log(bcrypt.hashSync('$ADMIN_PASSWORD', 10));")
mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -e "
INSERT INTO usuarios (id, apellido, nombre, dni, fechaNacimiento, email, rol, passwordHash, fechaCreacion)
VALUES ('$ADMIN_ID', 'Administrador', 'Sistema', '$ADMIN_DNI', '$TODAY', 'admin@hospital.local', 'admin', '$HASH', '$TODAY');
"
HASH=$(node -e "const bcrypt=require('bcryptjs'); console.log(bcrypt.hashSync('$ADMIN_PASSWORD',10));")
mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -e "INSERT INTO usuarios (id,apellido,nombre,dni,fechaNacimiento,email,rol,passwordHash,fechaCreacion) VALUES ('$ADMIN_ID','Administrador','Sistema','$ADMIN_DNI','$TODAY','admin@hospital.local','admin','$HASH','$TODAY');"
echo "=========================================="
echo "ADMIN CREDENTIALS:"
echo "DNI: $ADMIN_DNI"
@@ -64,10 +36,8 @@ if [ -n "$TABLE_EXISTS" ]; then
fi
fi
echo "=== Initialisation complete ==="
# Start nginx in background
echo "Starting nginx..."
nginx &
# Run the backend
echo "Starting API server..."
exec node server/api-mariadb.js