XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

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
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

3 个文件 +17 -118
Modified Dockerfile +4 -46
@@ -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"]
Modified docker-compose.yml +9 -52
@@ -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
Modified docker-entrypoint.sh +4 -20
@@ -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