Spaces:
Runtime error
Runtime error
Aaron Brown commited on
Commit Β·
8b07a89
1
Parent(s): 49d1c75
Fix runtime errors: Python path, MySQL perms, PHP-FPM detection
Browse files- Use same base image for builder and runtime (Python 3.11 compat)
- Use python3 -m uvicorn instead of venv shebang
- Auto-detect PHP-FPM binary name (varies by distro)
- Fix MySQL log directory permissions (chown mysql:mysql)
- Create /var/run/mysqld with correct ownership at build time
- Remove set -e so service timeouts don't kill startup
- Dockerfile +14 -37
- start.sh +26 -19
Dockerfile
CHANGED
|
@@ -37,56 +37,33 @@ RUN --mount=type=cache,target=/root/.cache/uv \
|
|
| 37 |
fi
|
| 38 |
|
| 39 |
# ---------------------------------------------------------------------------
|
| 40 |
-
# Stage 2: Runtime β
|
| 41 |
# ---------------------------------------------------------------------------
|
| 42 |
-
FROM
|
| 43 |
|
| 44 |
ENV DEBIAN_FRONTEND=noninteractive
|
| 45 |
|
| 46 |
# Install ALL service packages in one RUN layer
|
| 47 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 48 |
-
# Web
|
| 49 |
nginx \
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
php8.1-xml \
|
| 54 |
-
php8.1-mbstring \
|
| 55 |
-
# Database
|
| 56 |
-
mysql-server \
|
| 57 |
-
# LDAP
|
| 58 |
-
slapd \
|
| 59 |
-
ldap-utils \
|
| 60 |
-
# Logging
|
| 61 |
rsyslog \
|
| 62 |
-
# File sharing
|
| 63 |
samba \
|
| 64 |
-
# Mail
|
| 65 |
postfix \
|
| 66 |
-
# SSH
|
| 67 |
openssh-server \
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
nikto \
|
| 73 |
-
netcat-openbsd \
|
| 74 |
-
dnsutils \
|
| 75 |
-
tcpdump \
|
| 76 |
-
curl \
|
| 77 |
-
wget \
|
| 78 |
-
sshpass \
|
| 79 |
-
iputils-ping \
|
| 80 |
-
whois \
|
| 81 |
-
# Python
|
| 82 |
-
python3 \
|
| 83 |
-
python3-pip \
|
| 84 |
-
# Utilities
|
| 85 |
-
jq \
|
| 86 |
-
procps \
|
| 87 |
-
iproute2 \
|
| 88 |
&& rm -rf /var/lib/apt/lists/*
|
| 89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
WORKDIR /app
|
| 91 |
|
| 92 |
# Copy the Python virtual environment from builder
|
|
|
|
| 37 |
fi
|
| 38 |
|
| 39 |
# ---------------------------------------------------------------------------
|
| 40 |
+
# Stage 2: Runtime β same base image (Python 3.11) + range services
|
| 41 |
# ---------------------------------------------------------------------------
|
| 42 |
+
FROM ${BASE_IMAGE}
|
| 43 |
|
| 44 |
ENV DEBIAN_FRONTEND=noninteractive
|
| 45 |
|
| 46 |
# Install ALL service packages in one RUN layer
|
| 47 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
|
|
| 48 |
nginx \
|
| 49 |
+
php-fpm php-mysql php-ldap php-xml php-mbstring \
|
| 50 |
+
default-mysql-server \
|
| 51 |
+
slapd ldap-utils \
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
rsyslog \
|
|
|
|
| 53 |
samba \
|
|
|
|
| 54 |
postfix \
|
|
|
|
| 55 |
openssh-server \
|
| 56 |
+
nmap sqlmap hydra nikto \
|
| 57 |
+
netcat-openbsd dnsutils tcpdump curl wget sshpass \
|
| 58 |
+
iputils-ping whois \
|
| 59 |
+
jq procps iproute2 \
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
&& rm -rf /var/lib/apt/lists/*
|
| 61 |
|
| 62 |
+
# Create directories and fix permissions for services
|
| 63 |
+
RUN mkdir -p /var/log/siem/consolidated /run/sshd /run/php /var/run/mysqld /var/log/mysql \
|
| 64 |
+
&& (chown mysql:mysql /var/log/siem /var/run/mysqld /var/log/mysql 2>/dev/null || true) \
|
| 65 |
+
&& chmod 755 /var/log/siem
|
| 66 |
+
|
| 67 |
WORKDIR /app
|
| 68 |
|
| 69 |
# Copy the Python virtual environment from builder
|
start.sh
CHANGED
|
@@ -8,7 +8,7 @@
|
|
| 8 |
# 3. exec uvicorn as PID 1
|
| 9 |
# =============================================================================
|
| 10 |
|
| 11 |
-
set -
|
| 12 |
|
| 13 |
LOGDIR="/var/log/siem"
|
| 14 |
CONSOLIDATED="${LOGDIR}/consolidated"
|
|
@@ -32,6 +32,7 @@ echo "[start.sh] Creating required directories..."
|
|
| 32 |
mkdir -p "${CONSOLIDATED}"
|
| 33 |
mkdir -p /run/php
|
| 34 |
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
|
|
|
|
| 35 |
mkdir -p /var/run/sshd
|
| 36 |
mkdir -p /var/run/slapd
|
| 37 |
mkdir -p /var/lib/samba/private
|
|
@@ -66,24 +67,30 @@ done
|
|
| 66 |
# ββ 3. PHP-FPM ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 67 |
|
| 68 |
echo "[start.sh] Starting PHP-FPM..."
|
| 69 |
-
php-
|
| 70 |
-
|
| 71 |
-
|
|
|
|
|
|
|
|
|
|
| 72 |
|
| 73 |
-
# Poll for PHP-FPM socket
|
| 74 |
-
echo -n "[start.sh] Waiting for PHP-FPM readiness"
|
| 75 |
-
for i in $(seq 1 15); do
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
done
|
|
|
|
|
|
|
|
|
|
| 87 |
|
| 88 |
# ββ 4. Nginx ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 89 |
|
|
@@ -197,4 +204,4 @@ echo "============================================================"
|
|
| 197 |
# ββ 10. exec uvicorn as PID 1 ββββββββββββββββββββββββββββββββββββββββββββββ
|
| 198 |
|
| 199 |
cd /app/env
|
| 200 |
-
exec uvicorn server.app:app --host 0.0.0.0 --port 8000
|
|
|
|
| 8 |
# 3. exec uvicorn as PID 1
|
| 9 |
# =============================================================================
|
| 10 |
|
| 11 |
+
set -uo pipefail
|
| 12 |
|
| 13 |
LOGDIR="/var/log/siem"
|
| 14 |
CONSOLIDATED="${LOGDIR}/consolidated"
|
|
|
|
| 32 |
mkdir -p "${CONSOLIDATED}"
|
| 33 |
mkdir -p /run/php
|
| 34 |
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
|
| 35 |
+
chown mysql:mysql "${LOGDIR}" /var/log/mysql 2>/dev/null || true
|
| 36 |
mkdir -p /var/run/sshd
|
| 37 |
mkdir -p /var/run/slapd
|
| 38 |
mkdir -p /var/lib/samba/private
|
|
|
|
| 67 |
# ββ 3. PHP-FPM ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 68 |
|
| 69 |
echo "[start.sh] Starting PHP-FPM..."
|
| 70 |
+
# Find the correct php-fpm binary (varies by distro)
|
| 71 |
+
PHP_FPM=$(command -v php-fpm8.2 || command -v php-fpm8.1 || command -v php-fpm || echo "")
|
| 72 |
+
if [ -n "$PHP_FPM" ]; then
|
| 73 |
+
$PHP_FPM --nodaemonize --force-stderr \
|
| 74 |
+
> "${LOGDIR}/php-fpm.log" 2>&1 &
|
| 75 |
+
PIDS+=($!)
|
| 76 |
|
| 77 |
+
# Poll for PHP-FPM socket (path varies)
|
| 78 |
+
echo -n "[start.sh] Waiting for PHP-FPM readiness"
|
| 79 |
+
for i in $(seq 1 15); do
|
| 80 |
+
if ls /run/php/php*-fpm.sock >/dev/null 2>&1; then
|
| 81 |
+
echo " ready (${i}s)"
|
| 82 |
+
break
|
| 83 |
+
fi
|
| 84 |
+
echo -n "."
|
| 85 |
+
sleep 1
|
| 86 |
+
if [ "$i" -eq 15 ]; then
|
| 87 |
+
echo " TIMEOUT"
|
| 88 |
+
echo "[start.sh] WARNING: PHP-FPM socket not found after 15s"
|
| 89 |
+
fi
|
| 90 |
+
done
|
| 91 |
+
else
|
| 92 |
+
echo "[start.sh] PHP-FPM not installed, skipping"
|
| 93 |
+
fi
|
| 94 |
|
| 95 |
# ββ 4. Nginx ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 96 |
|
|
|
|
| 204 |
# ββ 10. exec uvicorn as PID 1 ββββββββββββββββββββββββββββββββββββββββββββββ
|
| 205 |
|
| 206 |
cd /app/env
|
| 207 |
+
exec python3 -m uvicorn server.app:app --host 0.0.0.0 --port 8000
|