Use separate MariaDB container
This commit is contained in:
+9
-6
@@ -9,13 +9,16 @@ RUN npm ci
|
|||||||
COPY . .
|
COPY . .
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
# Stage 2: Full stack with MariaDB
|
# Stage 2: App only (no MariaDB)
|
||||||
FROM node:20-alpine
|
FROM node:20-alpine
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Install dependencies
|
# Install nginx
|
||||||
RUN apk add --no-cache mariadb mariadb-client mariadb-server-utils nginx bash
|
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 files
|
||||||
COPY server/package*.json ./server/
|
COPY server/package*.json ./server/
|
||||||
@@ -27,15 +30,15 @@ COPY server/ ./server/
|
|||||||
COPY nginx.conf /etc/nginx/http.d/default.conf
|
COPY nginx.conf /etc/nginx/http.d/default.conf
|
||||||
|
|
||||||
# Create directories
|
# Create directories
|
||||||
RUN mkdir -p /run/nginx /run/mysqld /var/lib/mysql
|
RUN mkdir -p /run/nginx
|
||||||
|
|
||||||
# Copy entrypoint
|
# Copy entrypoint
|
||||||
COPY docker-entrypoint.sh /docker-entrypoint.sh
|
COPY docker-entrypoint.sh /docker-entrypoint.sh
|
||||||
RUN chmod +x /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_PORT=3306
|
||||||
ENV DB_USER=hospital
|
ENV DB_USER=hospital
|
||||||
ENV DB_PASSWORD=hospital123
|
ENV DB_PASSWORD=hospital123
|
||||||
|
|||||||
+20
-2
@@ -1,13 +1,29 @@
|
|||||||
version: '3.8'
|
version: '3.8'
|
||||||
|
|
||||||
services:
|
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:
|
app:
|
||||||
build: .
|
build: .
|
||||||
ports:
|
ports:
|
||||||
- "8077:80"
|
- "8077:80"
|
||||||
- "4000:4000"
|
- "4000:4000"
|
||||||
environment:
|
environment:
|
||||||
DB_HOST: localhost
|
DB_HOST: db
|
||||||
DB_PORT: "3306"
|
DB_PORT: "3306"
|
||||||
DB_USER: hospital
|
DB_USER: hospital
|
||||||
DB_PASSWORD: hospital123
|
DB_PASSWORD: hospital123
|
||||||
@@ -15,8 +31,10 @@ services:
|
|||||||
ADMIN_DNI: "00000000"
|
ADMIN_DNI: "00000000"
|
||||||
ADMIN_PASSWORD: Admin123!
|
ADMIN_PASSWORD: Admin123!
|
||||||
volumes:
|
volumes:
|
||||||
- mariadb-data:/var/lib/mysql
|
|
||||||
- nginx-data:/usr/share/nginx/html
|
- nginx-data:/usr/share/nginx/html
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
+4
-30
@@ -1,27 +1,14 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
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_NAME="${DB_NAME:-hospital}"
|
||||||
DB_USER="${DB_USER:-hospital}"
|
DB_USER="${DB_USER:-hospital}"
|
||||||
DB_PASSWORD="${DB_PASSWORD:-hospital123}"
|
DB_PASSWORD="${DB_PASSWORD:-hospital123}"
|
||||||
|
|
||||||
echo "Creating database: $DB_NAME"
|
echo "Waiting for MariaDB to be ready..."
|
||||||
mysql -h localhost -u root -e "CREATE DATABASE IF NOT EXISTS \`$DB_NAME\`;"
|
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
|
||||||
echo "Creating user: $DB_USER"
|
done
|
||||||
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;"
|
|
||||||
|
|
||||||
ADMIN_DNI="${ADMIN_DNI:-00000000}"
|
ADMIN_DNI="${ADMIN_DNI:-00000000}"
|
||||||
ADMIN_PASSWORD="${ADMIN_PASSWORD:-Admin123!}"
|
ADMIN_PASSWORD="${ADMIN_PASSWORD:-Admin123!}"
|
||||||
@@ -44,17 +31,4 @@ echo "DNI: $ADMIN_DNI"
|
|||||||
echo "Password: $ADMIN_PASSWORD"
|
echo "Password: $ADMIN_PASSWORD"
|
||||||
echo "=========================================="
|
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
|
exec node server/api-mariadb.js
|
||||||
Reference in New Issue
Block a user