-
Notifications
You must be signed in to change notification settings - Fork 44
Expand file tree
/
Copy pathDockerfile
More file actions
126 lines (108 loc) · 4.1 KB
/
Copy pathDockerfile
File metadata and controls
126 lines (108 loc) · 4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
FROM debian:trixie-slim
ARG SOURCE_URL=https://github.com/acemod/docker-reforger
LABEL maintainer="ACE Team - https://github.com/acemod"
LABEL org.opencontainers.image.source="$SOURCE_URL"
# SteamCMD requires root. Do not add a USER directive.
# checkov:skip=CKV_DOCKER_3: SteamCMD and the Arma server require root
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN apt-get update \
&& apt-get install -y --no-install-recommends --no-install-suggests \
python3 \
lib32stdc++6 \
lib32gcc-s1 \
wget \
ca-certificates \
libcurl4 \
net-tools \
libssl3t64 \
wamerican \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /steamcmd \
&& wget -qO- 'https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz' | tar zxf - -C /steamcmd
ENV STEAM_USER=""
ENV STEAM_APPID="1874900"
ENV STEAM_BRANCH="public"
ENV ARMA_CONFIG=docker_generated
ENV ARMA_PROFILE=/home/profile
ENV ARMA_BINARY="./ArmaReforgerServer"
ENV ARMA_PARAMS=""
ENV ARMA_MAX_FPS=120
ENV ARMA_WORKSHOP_DIR=/reforger/workshop
ENV SERVER_BIND_ADDRESS="0.0.0.0"
ENV SERVER_BIND_PORT=2001
ENV SERVER_PUBLIC_ADDRESS=""
ENV SERVER_PUBLIC_PORT=2001
ENV SERVER_A2S_ADDRESS="0.0.0.0"
ENV SERVER_A2S_PORT=17777
ENV RCON_ADDRESS="0.0.0.0"
ENV RCON_PORT=19999
ENV RCON_PERMISSION="admin"
ENV RCON_MAX_CLIENTS=""
ENV RCON_BLACKLIST=""
ENV RCON_WHITELIST=""
ENV GAME_NAME="Arma Reforger Docker Server"
# GAME_ADMINS - comma-delimited list of identityIds and/or steamIds
ENV GAME_ADMINS=""
ENV GAME_SCENARIO_ID="{ECC61978EDCC2B5A}Missions/23_Campaign.conf"
ENV GAME_MAX_PLAYERS=32
ENV GAME_VISIBLE=true
ENV GAME_SUPPORTED_PLATFORMS=PLATFORM_PC,PLATFORM_XBL,PLATFORM_PSN
ENV GAME_CROSS_PLATFORM=""
ENV GAME_MODS_REQUIRED_BY_DEFAULT=""
ENV GAME_MODS_AUTO_PRUNE=false
ENV GAME_MISSION_HEADER_JSON_FILE_PATH=""
ENV GAME_PROPS_BATTLEYE=true
ENV GAME_PROPS_DISABLE_THIRD_PERSON=false
ENV GAME_PROPS_FAST_VALIDATION=true
ENV GAME_PROPS_SERVER_MAX_VIEW_DISTANCE=2500
ENV GAME_PROPS_SERVER_MIN_GRASS_DISTANCE=50
ENV GAME_PROPS_NETWORK_VIEW_DISTANCE=1000
ENV GAME_MODS_IDS_LIST=""
ENV GAME_MODS_JSON_FILE_PATH=""
ENV GAME_PROPS_VON_DISABLE_UI=false
ENV GAME_PROPS_VON_DISABLE_DIRECT_SPEECH_UI=false
ENV GAME_PROPS_VON_CAN_TRANSMIT_CROSS_FACTION=false
# Persistence (disabled by default - set any to enable)
ENV PERSISTENCE_AUTO_SAVE_INTERVAL=""
ENV PERSISTENCE_SAVE_RETENTION=""
ENV PERSISTENCE_LOAD_SESSION_SAVE=""
ENV PERSISTENCE_KEEP_SESSION_SAVE=""
ENV PERSISTENCE_HIVE_ID=""
ENV PERSISTENCE_JSON_FILE_PATH=""
# Operating (disabled by default - set any to enable)
ENV OPERATING_LOBBY_PLAYER_SYNCHRONISE=""
ENV OPERATING_DISABLE_CRASH_REPORTER=""
ENV OPERATING_DISABLE_NAVMESH_STREAMING=""
ENV OPERATING_DISABLE_SERVER_SHUTDOWN=""
ENV OPERATING_DISABLE_AI=""
ENV OPERATING_PLAYER_SAVE_TIME=""
ENV OPERATING_AI_LIMIT=""
ENV OPERATING_SLOT_RESERVATION_TIMEOUT=""
ENV OPERATING_JOIN_QUEUE_MAX_SIZE=""
ENV SKIP_INSTALL=false
# Keep Python stdout unbuffered so prune and SteamCMD output reaches `docker logs`
# in real time instead of waiting for the long-running server to exit.
ENV PYTHONUNBUFFERED=1
WORKDIR /reforger
VOLUME /steamcmd
VOLUME /home/profile
VOLUME /reforger/Configs
VOLUME /reforger/workshop
# These expand to the default ports above at build time. They are documentation
# only - overriding the ports at runtime still works, it just won't change these.
EXPOSE $SERVER_BIND_PORT/udp
EXPOSE $SERVER_A2S_PORT/udp
EXPOSE $RCON_PORT/udp
STOPSIGNAL SIGINT
COPY src/ /app/
# PERSISTENCE_JSON_FILE_PATH is documented as pointing here, so this path is
# part of the public interface and does not move with the rest of the app.
COPY persistence_default.json /
# start-period gives the first SteamCMD install and server boot time to finish
# before failing checks count against retries. Bump it if your install is slower.
# timeout has headroom for healthcheck.py probing several UDP endpoints (IPv6 +
# IPv4) at 5s each when the server is down, so Docker does not kill the probe.
HEALTHCHECK --interval=60s --timeout=30s --start-period=15m --retries=3 \
CMD ["python3","/app/healthcheck.py"]
CMD ["python3","/app/launch.py"]