fix acc server container restarting
This commit is contained in:
@@ -15,10 +15,9 @@ RUN dpkg --add-architecture i386 && \
|
||||
&& \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Create a non-root user for running the server.
|
||||
RUN useradd -ms /bin/bash accserver
|
||||
RUN mkdir -p /tmp/.X11-unix && chmod 1777 /tmp/.X11-unix
|
||||
|
||||
WORKDIR /home/accserver
|
||||
WORKDIR /root
|
||||
|
||||
# Copy entrypoint script.
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
@@ -30,10 +29,8 @@ VOLUME ["/acc/game"]
|
||||
# Default server port — overridden at runtime via SERVER_PORT env var.
|
||||
ENV SERVER_PORT=9600
|
||||
ENV WINEDEBUG=-all
|
||||
ENV DISPLAY=:99
|
||||
|
||||
EXPOSE ${SERVER_PORT}/tcp
|
||||
EXPOSE ${SERVER_PORT}/udp
|
||||
|
||||
USER accserver
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
|
||||
@@ -1,7 +1,15 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
Xvfb :99 -screen 0 1024x768x16 &
|
||||
# Use a display number derived from the server port to avoid conflicts
|
||||
# between containers (each server gets its own unique display).
|
||||
DISPLAY_NUM=$((SERVER_PORT % 1000 + 100))
|
||||
export DISPLAY=:${DISPLAY_NUM}
|
||||
|
||||
# Clean up any stale X lock from a previous container run.
|
||||
rm -f /tmp/.X${DISPLAY_NUM}-lock /tmp/.X11-unix/X${DISPLAY_NUM} 2>/dev/null || true
|
||||
|
||||
Xvfb ${DISPLAY} -screen 0 1024x768x16 -nolisten tcp &
|
||||
XVFB_PID=$!
|
||||
|
||||
cleanup() {
|
||||
@@ -10,7 +18,9 @@ cleanup() {
|
||||
}
|
||||
trap cleanup SIGTERM SIGINT
|
||||
|
||||
mkdir -p /acc/game/log
|
||||
|
||||
echo "Starting ACC server on port ${SERVER_PORT}..."
|
||||
|
||||
exec wine /acc/game/accServer.exe \
|
||||
-port "${SERVER_PORT}"
|
||||
cd /acc/game
|
||||
exec wine /acc/game/accServer.exe
|
||||
|
||||
Reference in New Issue
Block a user