返回提交历史
Modified
Dockerfile
+4
-46
Modified
docker-compose.yml
+9
-52
Modified
docker-entrypoint.sh
+4
-20
XFEstudio/XFESpaceNinjaServer
chore(docker): use file-based config & precompile code in image (#2202)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2202 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
4ca4990f
代码差异
3 个文件
+17
-118
@@ -1,53 +1,11 @@
1
1
FROM node:24-alpine3.21
2
2
3
ENV APP_MONGODB_URL=mongodb://mongodb:27017/openWF
4
ENV APP_MY_ADDRESS=localhost
5
ENV APP_HTTP_PORT=80
6
ENV APP_HTTPS_PORT=443
7
ENV APP_AUTO_CREATE_ACCOUNT=true
8
ENV APP_SKIP_TUTORIAL=false
9
ENV APP_SKIP_ALL_DIALOGUE=false
10
ENV APP_UNLOCK_ALL_SCANS=false
11
ENV APP_UNLOCK_ALL_MISSIONS=false
12
ENV APP_INFINITE_CREDITS=false
13
ENV APP_INFINITE_PLATINUM=false
14
ENV APP_INFINITE_ENDO=false
15
ENV APP_INFINITE_REGAL_AYA=false
16
ENV APP_INFINITE_HELMINTH_MATERIALS=false
17
ENV APP_CLAIMING_BLUEPRINT_REFUNDS_INGREDIENTS=false
18
ENV APP_DONT_SUBTRACT_VOIDTRACES=false
19
ENV APP_DONT_SUBTRACT_CONSUMABLES=false
20
ENV APP_UNLOCK_ALL_SHIP_FEATURES=false
21
ENV APP_UNLOCK_ALL_SHIP_DECORATIONS=false
22
ENV APP_UNLOCK_ALL_FLAVOUR_ITEMS=false
23
ENV APP_UNLOCK_ALL_SKINS=false
24
ENV APP_UNLOCK_ALL_CAPTURA_SCENES=false
25
ENV APP_UNIVERSAL_POLARITY_EVERYWHERE=false
26
ENV APP_UNLOCK_DOUBLE_CAPACITY_POTATOES_EVERYWHERE=false
27
ENV APP_UNLOCK_EXILUS_EVERYWHERE=false
28
ENV APP_UNLOCK_ARCANES_EVERYWHERE=false
29
ENV APP_NO_DAILY_FOCUS_LIMIT=false
30
ENV APP_NO_ARGON_CRYSTAL_DECAY=false
31
ENV APP_NO_MASTERY_RANK_UP_COOLDOWN=false
32
ENV APP_NO_VENDOR_PURCHASE_LIMITS=true
33
ENV APP_NO_DEATH_MARKS=false
34
ENV APP_NO_KIM_COOLDOWNS=false
35
ENV APP_SYNDICATE_MISSIONS_REPEATABLE=false
36
ENV APP_INSTANT_FINISH_RIVEN_CHALLENGE=false
37
ENV APP_INSTANT_RESOURCE_EXTRACTOR_DRONES=false
38
ENV APP_NO_RESOURCE_EXTRACTOR_DRONES_DAMAGE=false
39
ENV APP_SKIP_CLAN_KEY_CRAFTING=false
40
ENV APP_NO_DOJO_ROOM_BUILD_STAGE=false
41
ENV APP_NO_DECO_BUILD_STAGE=false
42
ENV APP_FAST_DOJO_ROOM_DESTRUCTION=false
43
ENV APP_NO_DOJO_RESEARCH_COSTS=false
44
ENV APP_NO_DOJO_RESEARCH_TIME=false
45
ENV APP_FAST_CLAN_ASCENSION=false
46
ENV APP_SPOOF_MASTERY_RANK=-1
47
48
RUN apk add --no-cache bash sed wget jq
3
RUN apk add --no-cache bash jq
49
4
50
5
COPY . /app
51
6
WORKDIR /app
52
7
8
RUN npm i --omit=dev
9
RUN npm run build
10
53
11
ENTRYPOINT ["/app/docker-entrypoint.sh"]
@@ -1,62 +1,18 @@
1
1
services:
2
2
spaceninjaserver:
3
# build: .
4
image: openwf/spaceninjaserver:latest
5
environment:
6
APP_MONGODB_URL: mongodb://openwfagent:spaceninjaserver@mongodb:27017/
7
8
# Following environment variables are set to default image values.
9
# Uncomment to edit.
10
11
# APP_MY_ADDRESS: localhost
12
# APP_HTTP_PORT: 80
13
# APP_HTTPS_PORT: 443
14
# APP_AUTO_CREATE_ACCOUNT: true
15
# APP_SKIP_TUTORIAL: false
16
# APP_SKIP_ALL_DIALOGUE: false
17
# APP_UNLOCK_ALL_SCANS: false
18
# APP_UNLOCK_ALL_MISSIONS: false
19
# APP_INFINITE_CREDITS: false
20
# APP_INFINITE_PLATINUM: false
21
# APP_INFINITE_ENDO: false
22
# APP_INFINITE_REGAL_AYA: false
23
# APP_INFINITE_HELMINTH_MATERIALS: false
24
# APP_CLAIMING_BLUEPRINT_REFUNDS_INGREDIENTS: false
25
# APP_DONT_SUBTRACT_VOIDTRACES: false
26
# APP_DONT_SUBTRACT_CONSUMABLES: false
27
# APP_UNLOCK_ALL_SHIP_FEATURES: false
28
# APP_UNLOCK_ALL_SHIP_DECORATIONS: false
29
# APP_UNLOCK_ALL_FLAVOUR_ITEMS: false
30
# APP_UNLOCK_ALL_SKINS: false
31
# APP_UNLOCK_ALL_CAPTURA_SCENES: false
32
# APP_UNIVERSAL_POLARITY_EVERYWHERE: false
33
# APP_UNLOCK_DOUBLE_CAPACITY_POTATOES_EVERYWHERE: false
34
# APP_UNLOCK_EXILUS_EVERYWHERE: false
35
# APP_UNLOCK_ARCANES_EVERYWHERE: false
36
# APP_NO_DAILY_FOCUS_LIMIT: false
37
# APP_NO_ARGON_CRYSTAL_DECAY: false
38
# APP_NO_MASTERY_RANK_UP_COOLDOWN: false
39
# APP_NO_VENDOR_PURCHASE_LIMITS: true
40
# APP_NO_DEATH_MARKS: false
41
# APP_NO_KIM_COOLDOWNS: false
42
# APP_SYNDICATE_MISSIONS_REPEATABLE: false
43
# APP_INSTANT_FINISH_RIVEN_CHALLENGE: false
44
# APP_INSTANT_RESOURCE_EXTRACTOR_DRONES: false
45
# APP_NO_RESOURCE_EXTRACTOR_DRONES_DAMAGE: false
46
# APP_SKIP_CLAN_KEY_CRAFTING: false
47
# APP_NO_DOJO_ROOM_BUILD_STAGE: false
48
# APP_NO_DECO_BUILD_STAGE: false
49
# APP_FAST_DOJO_ROOM_DESTRUCTION: false
50
# APP_NO_DOJO_RESEARCH_COSTS: false
51
# APP_NO_DOJO_RESEARCH_TIME: false
52
# APP_FAST_CLAN_ASCENSION: false
53
# APP_SPOOF_MASTERY_RANK: -1
54
3
volumes:
55
- ./docker-data/static:/app/static/data
4
- ./docker-data/conf:/app/conf
5
- ./docker-data/static-data:/app/static/data
56
6
- ./docker-data/logs:/app/logs
57
7
ports:
58
8
- 80:80
59
9
- 443:443
10
11
# Normally, the image is fetched from Docker Hub, but you can use the local Dockerfile by swapping the following two fields.
12
# Works best when using `docker-compose up --force-recreate --build`.
13
image: openwf/spaceninjaserver:latest
14
#build: .
15
60
16
depends_on:
61
17
- mongodb
62
18
mongodb:
@@ -66,3 +22,4 @@ services:
66
22
MONGO_INITDB_ROOT_PASSWORD: spaceninjaserver
67
23
volumes:
68
24
- ./docker-data/database:/data/db
25
command: mongod --quiet --logpath /dev/null
@@ -1,24 +1,8 @@
1
1
#!/bin/bash
2
2
set -e
3
3
4
# Set up the configuration file using environment variables.
5
echo '{
6
"logger": {
7
"files": true,
8
"level": "trace",
9
"__valid_levels": "fatal, error, warn, info, http, debug, trace"
10
}
11
}
12
' > config.json
4
if [ ! -f conf/config.json ]; then
5
jq --arg value "mongodb://openwfagent:spaceninjaserver@mongodb:27017/" '.mongodbUrl = $value' /app/config.json.example > /app/conf/config.json
6
fi
13
7
14
for config in $(env | grep "APP_")
15
do
16
var=$(echo "${config}" | tr '[:upper:]' '[:lower:]' | sed 's/app_//g' | sed -E 's/_([a-z])/\U\1/g' | sed 's/=.*//g')
17
val=$(echo "${config}" | sed 's/.*=//g')
18
jq --arg variable "$var" --arg value "$val" '.[$variable] += try [$value|fromjson][] catch $value' config.json > config.tmp
19
mv config.tmp config.json
20
done
21
22
npm i --omit=dev
23
npm run build
24
exec npm run start
8
exec npm run start conf/config.json