Use separate MariaDB container

This commit is contained in:
2026-04-24 17:29:07 -03:00
parent 91836d44fe
commit a3ead13ec6
3 changed files with 33 additions and 38 deletions
+9 -6
View File
@@ -9,13 +9,16 @@ RUN npm ci
COPY . .
RUN npm run build
# Stage 2: Full stack with MariaDB
# Stage 2: App only (no MariaDB)
FROM node:20-alpine
WORKDIR /app
# Install dependencies
RUN apk add --no-cache mariadb mariadb-client mariadb-server-utils nginx bash
# Install nginx
RUN apk add --no-cache nginx bash
# Copy built frontend to nginx
COPY --from=builder /build/dist /usr/share/nginx/html
# Copy server files
COPY server/package*.json ./server/
@@ -27,15 +30,15 @@ COPY server/ ./server/
COPY nginx.conf /etc/nginx/http.d/default.conf
# Create directories
RUN mkdir -p /run/nginx /run/mysqld /var/lib/mysql
RUN mkdir -p /run/nginx
# Copy entrypoint
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
EXPOSE 80 4000 3306
EXPOSE 80 4000
ENV DB_HOST=localhost
ENV DB_HOST=db
ENV DB_PORT=3306
ENV DB_USER=hospital
ENV DB_PASSWORD=hospital123
+20 -2
View File
@@ -1,13 +1,29 @@
version: '3.8'
services:
db:
image: mariadb:10.11
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: hospital
MYSQL_USER: hospital
MYSQL_PASSWORD: hospital123
volumes:
- mariadb-data:/var/lib/mysql
restart: unless-stopped
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 5
app:
build: .
ports:
- "8077:80"
- "4000:4000"
environment:
DB_HOST: localhost
DB_HOST: db
DB_PORT: "3306"
DB_USER: hospital
DB_PASSWORD: hospital123
@@ -15,8 +31,10 @@ services:
ADMIN_DNI: "00000000"
ADMIN_PASSWORD: Admin123!
volumes:
- mariadb-data:/var/lib/mysql
- nginx-data:/usr/share/nginx/html
depends_on:
db:
condition: service_healthy
restart: unless-stopped
volumes:
+4 -30
View File
@@ -1,27 +1,14 @@
#!/usr/bin/env bash
set -e
echo "=== Starting MariaDB ==="
mysqld --user=mysql &
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}"
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\`;"
echo "Creating user: $DB_USER"
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;"
echo "Waiting for MariaDB to be ready..."
for i in $(seq 1 60); do
mysql -h "${DB_HOST:-db}" -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -e "SELECT 1" 2>/dev/null && break || sleep 2
done
ADMIN_DNI="${ADMIN_DNI:-00000000}"
ADMIN_PASSWORD="${ADMIN_PASSWORD:-Admin123!}"
@@ -44,17 +31,4 @@ echo "DNI: $ADMIN_DNI"
echo "Password: $ADMIN_PASSWORD"
echo "=========================================="
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:"
echo "DNI: $ADMIN_DNI"
echo "Password: $ADMIN_PASSWORD"
echo "=========================================="
fi
echo "Starting nginx..."
nginx &
echo "Starting API server..."
exec node server/api-mariadb.js