Use separate MariaDB container
This commit is contained in:
+9
-6
@@ -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
@@ -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
@@ -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
|
||||
Reference in New Issue
Block a user