d273391773
We now serve Netbox with an nginx-unit instance instead of Gunicorn. This allows us to get rid of the extra Nginx container because Unit is also serving the static files. The static files are now collected at container buildtime instead of every startup.
54 lines
1.5 KiB
Bash
Executable File
54 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
UNIT_CONFIG="${UNIT_CONFIG-/etc/unit/nginx-unit.json}"
|
|
UNIT_SOCKET="/opt/unit/unit.sock"
|
|
|
|
load_configuration() {
|
|
MAX_WAIT=10
|
|
WAIT_COUNT=0
|
|
while [ ! -S $UNIT_SOCKET ]; do
|
|
if [ $WAIT_COUNT -gte $MAX_WAIT ]; then
|
|
echo "⚠️ No control socket found; configuration will not be loaded."
|
|
return 1
|
|
fi
|
|
|
|
WAIT_COUNT=$((WAIT_COUNT + 1))
|
|
echo "⏳ Waiting for control socket to be created... (${WAIT_COUNT}/${MAX_WAIT})"
|
|
|
|
sleep 1
|
|
done
|
|
|
|
# even when the control socket exists, it does not mean unit has finished initialisation
|
|
# this curl call will get a reply once unit is fully launched
|
|
curl --silent --output /dev/null --request GET --unix-socket $UNIT_SOCKET http://localhost/
|
|
|
|
echo "⚙️ Applying configuration from $UNIT_CONFIG";
|
|
|
|
RESP_CODE=$(curl \
|
|
--silent \
|
|
--output /dev/null \
|
|
--write-out '%{http_code}' \
|
|
--request PUT \
|
|
--data-binary "@${UNIT_CONFIG}" \
|
|
--unix-socket $UNIT_SOCKET \
|
|
http://localhost/config
|
|
)
|
|
if [ "$RESP_CODE" != "200" ]; then
|
|
echo "⚠️ Could no load Unit configuration"
|
|
kill "$(cat /opt/unit/unit.pid)"
|
|
return 1
|
|
fi
|
|
|
|
echo "✅ Unit configuration loaded successfully"
|
|
}
|
|
|
|
load_configuration &
|
|
|
|
exec unitd \
|
|
--no-daemon \
|
|
--control unix:$UNIT_SOCKET \
|
|
--pid /opt/unit/unit.pid \
|
|
--log /dev/stdout \
|
|
--state /opt/unit/state/ \
|
|
--tmp /opt/unit/tmp/
|