FROM golang:1.25-bookworm AS backend WORKDIR /src COPY backend/go.mod backend/go.sum ./ RUN go mod download COPY backend/ . RUN CGO_ENABLED=0 go build -o /server ./cmd/server/ FROM node:22-alpine AS frontend WORKDIR /src COPY frontend/package.json frontend/package-lock.json ./ RUN npm ci COPY frontend/ . RUN npm run build FROM debian:bookworm-slim RUN apt-get update && \ apt-get install -y --no-install-recommends \ ca-certificates \ tzdata \ lib32gcc-s1 \ wget \ xz-utils && \ mkdir -p /steamcmd && \ wget -qO- https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz | \ tar xvz -C /steamcmd && \ ln -s /steamcmd/steamcmd.sh /usr/local/bin/steamcmd && \ rm -rf /var/lib/apt/lists/* COPY --from=backend /server /usr/local/bin/arma3-web-server COPY --from=frontend /src/dist /usr/share/arma3-web-server/frontend EXPOSE 8080 VOLUME ["/data", "/servers"] ENV DATA_DIR=/data ENV SERVERFILE_DIR=/servers ENV MODS_DIR=/servers/mods ENV CFG_DIR=/servers/cfg ENV PROFILES_DIR=/servers/profiles ENV LISTEN=:8080 ENV FRONTEND_DIR=/usr/share/arma3-web-server/frontend ENV GIN_MODE=release ENTRYPOINT ["arma3-web-server"]