diff --git a/Dockerfile b/Dockerfile index 6ace97d..8a9e717 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,14 +17,6 @@ WORKDIR /app # Install dependencies RUN apk add --no-cache mariadb mariadb-client mariadb-server-utils nginx bash -# Initialize MariaDB directories and schema -RUN mkdir -p /run/mysqld /var/lib/mysql && \ - chown -R mysql:mysql /run/mysqld /var/lib/mysql && \ - mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql - -# Copy built frontend to nginx -COPY --from=builder /build/dist /usr/share/nginx/html - # Copy server files COPY server/package*.json ./server/ RUN cd ./server && npm ci diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index b6299a4..b755593 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -18,7 +18,6 @@ echo "Creating database: $DB_NAME" mysql -h localhost -u root -e "CREATE DATABASE IF NOT EXISTS \`$DB_NAME\`;" echo "Creating user: $DB_USER" -# Create user for both localhost and % mysql -h localhost -u root -e "CREATE USER IF NOT EXISTS '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWORD';" mysql -h localhost -u root -e "CREATE USER IF NOT EXISTS '$DB_USER'@'%' IDENTIFIED BY '$DB_PASSWORD';" mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost';" @@ -30,11 +29,38 @@ ADMIN_DNI="${ADMIN_DNI:-00000000}" ADMIN_PASSWORD="${ADMIN_PASSWORD:-Admin123!}" echo "Checking admin user..." -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 - ADMIN_ID=$(node -e "console.log(require('crypto').randomUUID())") - TODAY=$(date +%Y-%m-%d) - HASH=$(node -e "const bcrypt=require('bcryptjs'); console.log(bcrypt.hashSync('$ADMIN_PASSWORD',10));") +TABLE_EXISTS=$(mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -N -e "SHOW TABLES LIKE 'usuarios';" 2>/dev/null || echo "") + +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 + ADMIN_ID=$(cat /proc/sys/kernel/random/uuid) + TODAY=$(date +%Y-%m-%d) + + # Insert user with empty password hash - needs password change + 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','','$TODAY'); + " + + # Use change-password API to set password + curl -s -X POST "http://localhost:4000/api/auth/change-password" \ + -H "Content-Type: application/json" \ + -d "{\"dni\":\"$ADMIN_DNI\",\"oldPassword\":\"\",\"newPassword\":\"$ADMIN_PASSWORD\"}" 2>/dev/null || true + + echo "==========================================" + echo "ADMIN CREDENTIALS:" + echo "DNI: $ADMIN_DNI" + echo "Password: $ADMIN_PASSWORD" + echo "==========================================" + fi +fi + +echo "Starting nginx..." +nginx & + +echo "Starting API server..." +exec node server/api-mariadb.js 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:"