From c6e18530347cd3d6088db68c46521a259af01b1b Mon Sep 17 00:00:00 2001 From: Sergio Nicolas Lavaise Date: Fri, 24 Apr 2026 14:37:03 -0300 Subject: [PATCH] Fix env vars and remove nginx volume --- docker-compose.yml | 18 ++++++++---------- docker-entrypoint.sh | 43 +++++++++++++++++++++++++------------------ 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 2437a8d..b8336b3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,18 +7,16 @@ services: - "8077:80" - "4000:4000" environment: - - DB_HOST=localhost - - DB_PORT=3306 - - DB_USER=hospital - - DB_PASSWORD=hospital123 - - DB_NAME=hospital - - ADMIN_DNI=00000000 - - ADMIN_PASSWORD=Admin123! + DB_HOST: localhost + DB_PORT: "3306" + DB_USER: hospital + DB_PASSWORD: hospital123 + DB_NAME: hospital + ADMIN_DNI: "00000000" + ADMIN_PASSWORD: Admin123! volumes: - mariadb-data:/var/lib/mysql - - nginx-data:/usr/share/nginx/html restart: unless-stopped volumes: - mariadb-data: - nginx-data: \ No newline at end of file + mariadb-data: \ No newline at end of file diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 04ea3c8..9a486d6 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -9,31 +9,38 @@ for i in $(seq 1 60); do mysqladmin ping -h localhost --silent 2>/dev/null && break || sleep 1 done +# Get environment variables DB_NAME="${DB_NAME:-hospital}" +DB_USER="${DB_USER:-hospital}" +DB_PASSWORD="${DB_PASSWORD:-hospital123}" + +echo "Creating database: $DB_NAME" mysql -h localhost -u root -e "CREATE DATABASE IF NOT EXISTS \`$DB_NAME\`;" -if [ -n "$DB_PASSWORD" ]; then - DB_USER="${DB_USER:-hospital}" - 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 +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';" +mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'%';" +mysql -h localhost -u root -e "FLUSH PRIVILEGES;" +# Create admin user ADMIN_DNI="${ADMIN_DNI:-00000000}" ADMIN_PASSWORD="${ADMIN_PASSWORD:-Admin123!}" -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 - ADMIN_ID=$(uuidgen) - TODAY=$(date +%Y-%m-%d) - 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" - echo "Password: $ADMIN_PASSWORD" - echo "==========================================" - fi +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=$(uuidgen) + TODAY=$(date +%Y-%m-%d) + 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" + echo "Password: $ADMIN_PASSWORD" + echo "==========================================" fi echo "Starting nginx..."