forked from OpenWF/SpaceNinjaServer
		
	chore(docker): use file-based config & precompile code in image (#2202)
Reviewed-on: OpenWF/SpaceNinjaServer#2202 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									bf40155dd4
								
							
						
					
					
						commit
						4ca4990f89
					
				
							
								
								
									
										50
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								Dockerfile
									
									
									
									
									
								
							@ -1,53 +1,11 @@
 | 
				
			|||||||
FROM node:24-alpine3.21
 | 
					FROM node:24-alpine3.21
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ENV APP_MONGODB_URL=mongodb://mongodb:27017/openWF
 | 
					RUN apk add --no-cache bash jq
 | 
				
			||||||
ENV APP_MY_ADDRESS=localhost
 | 
					 | 
				
			||||||
ENV APP_HTTP_PORT=80
 | 
					 | 
				
			||||||
ENV APP_HTTPS_PORT=443
 | 
					 | 
				
			||||||
ENV APP_AUTO_CREATE_ACCOUNT=true
 | 
					 | 
				
			||||||
ENV APP_SKIP_TUTORIAL=false
 | 
					 | 
				
			||||||
ENV APP_SKIP_ALL_DIALOGUE=false
 | 
					 | 
				
			||||||
ENV APP_UNLOCK_ALL_SCANS=false
 | 
					 | 
				
			||||||
ENV APP_UNLOCK_ALL_MISSIONS=false
 | 
					 | 
				
			||||||
ENV APP_INFINITE_CREDITS=false
 | 
					 | 
				
			||||||
ENV APP_INFINITE_PLATINUM=false
 | 
					 | 
				
			||||||
ENV APP_INFINITE_ENDO=false
 | 
					 | 
				
			||||||
ENV APP_INFINITE_REGAL_AYA=false
 | 
					 | 
				
			||||||
ENV APP_INFINITE_HELMINTH_MATERIALS=false
 | 
					 | 
				
			||||||
ENV APP_CLAIMING_BLUEPRINT_REFUNDS_INGREDIENTS=false
 | 
					 | 
				
			||||||
ENV APP_DONT_SUBTRACT_VOIDTRACES=false
 | 
					 | 
				
			||||||
ENV APP_DONT_SUBTRACT_CONSUMABLES=false
 | 
					 | 
				
			||||||
ENV APP_UNLOCK_ALL_SHIP_FEATURES=false
 | 
					 | 
				
			||||||
ENV APP_UNLOCK_ALL_SHIP_DECORATIONS=false
 | 
					 | 
				
			||||||
ENV APP_UNLOCK_ALL_FLAVOUR_ITEMS=false
 | 
					 | 
				
			||||||
ENV APP_UNLOCK_ALL_SKINS=false
 | 
					 | 
				
			||||||
ENV APP_UNLOCK_ALL_CAPTURA_SCENES=false
 | 
					 | 
				
			||||||
ENV APP_UNIVERSAL_POLARITY_EVERYWHERE=false
 | 
					 | 
				
			||||||
ENV APP_UNLOCK_DOUBLE_CAPACITY_POTATOES_EVERYWHERE=false
 | 
					 | 
				
			||||||
ENV APP_UNLOCK_EXILUS_EVERYWHERE=false
 | 
					 | 
				
			||||||
ENV APP_UNLOCK_ARCANES_EVERYWHERE=false
 | 
					 | 
				
			||||||
ENV APP_NO_DAILY_FOCUS_LIMIT=false
 | 
					 | 
				
			||||||
ENV APP_NO_ARGON_CRYSTAL_DECAY=false
 | 
					 | 
				
			||||||
ENV APP_NO_MASTERY_RANK_UP_COOLDOWN=false
 | 
					 | 
				
			||||||
ENV APP_NO_VENDOR_PURCHASE_LIMITS=true
 | 
					 | 
				
			||||||
ENV APP_NO_DEATH_MARKS=false
 | 
					 | 
				
			||||||
ENV APP_NO_KIM_COOLDOWNS=false
 | 
					 | 
				
			||||||
ENV APP_SYNDICATE_MISSIONS_REPEATABLE=false
 | 
					 | 
				
			||||||
ENV APP_INSTANT_FINISH_RIVEN_CHALLENGE=false
 | 
					 | 
				
			||||||
ENV APP_INSTANT_RESOURCE_EXTRACTOR_DRONES=false
 | 
					 | 
				
			||||||
ENV APP_NO_RESOURCE_EXTRACTOR_DRONES_DAMAGE=false
 | 
					 | 
				
			||||||
ENV APP_SKIP_CLAN_KEY_CRAFTING=false
 | 
					 | 
				
			||||||
ENV APP_NO_DOJO_ROOM_BUILD_STAGE=false
 | 
					 | 
				
			||||||
ENV APP_NO_DECO_BUILD_STAGE=false
 | 
					 | 
				
			||||||
ENV APP_FAST_DOJO_ROOM_DESTRUCTION=false
 | 
					 | 
				
			||||||
ENV APP_NO_DOJO_RESEARCH_COSTS=false
 | 
					 | 
				
			||||||
ENV APP_NO_DOJO_RESEARCH_TIME=false
 | 
					 | 
				
			||||||
ENV APP_FAST_CLAN_ASCENSION=false
 | 
					 | 
				
			||||||
ENV APP_SPOOF_MASTERY_RANK=-1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
RUN apk add --no-cache bash sed wget jq
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
COPY . /app
 | 
					COPY . /app
 | 
				
			||||||
WORKDIR /app
 | 
					WORKDIR /app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RUN npm i --omit=dev
 | 
				
			||||||
 | 
					RUN npm run build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ENTRYPOINT ["/app/docker-entrypoint.sh"]
 | 
					ENTRYPOINT ["/app/docker-entrypoint.sh"]
 | 
				
			||||||
 | 
				
			|||||||
@ -1,62 +1,18 @@
 | 
				
			|||||||
services:
 | 
					services:
 | 
				
			||||||
    spaceninjaserver:
 | 
					    spaceninjaserver:
 | 
				
			||||||
        # build: .
 | 
					 | 
				
			||||||
        image: openwf/spaceninjaserver:latest
 | 
					 | 
				
			||||||
        environment:
 | 
					 | 
				
			||||||
            APP_MONGODB_URL: mongodb://openwfagent:spaceninjaserver@mongodb:27017/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            # Following environment variables are set to default image values.
 | 
					 | 
				
			||||||
            # Uncomment to edit.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            # APP_MY_ADDRESS: localhost
 | 
					 | 
				
			||||||
            # APP_HTTP_PORT: 80
 | 
					 | 
				
			||||||
            # APP_HTTPS_PORT: 443
 | 
					 | 
				
			||||||
            # APP_AUTO_CREATE_ACCOUNT: true
 | 
					 | 
				
			||||||
            # APP_SKIP_TUTORIAL: false
 | 
					 | 
				
			||||||
            # APP_SKIP_ALL_DIALOGUE: false
 | 
					 | 
				
			||||||
            # APP_UNLOCK_ALL_SCANS: false
 | 
					 | 
				
			||||||
            # APP_UNLOCK_ALL_MISSIONS: false
 | 
					 | 
				
			||||||
            # APP_INFINITE_CREDITS: false
 | 
					 | 
				
			||||||
            # APP_INFINITE_PLATINUM: false
 | 
					 | 
				
			||||||
            # APP_INFINITE_ENDO: false
 | 
					 | 
				
			||||||
            # APP_INFINITE_REGAL_AYA: false
 | 
					 | 
				
			||||||
            # APP_INFINITE_HELMINTH_MATERIALS: false
 | 
					 | 
				
			||||||
            # APP_CLAIMING_BLUEPRINT_REFUNDS_INGREDIENTS: false
 | 
					 | 
				
			||||||
            # APP_DONT_SUBTRACT_VOIDTRACES: false
 | 
					 | 
				
			||||||
            # APP_DONT_SUBTRACT_CONSUMABLES: false
 | 
					 | 
				
			||||||
            # APP_UNLOCK_ALL_SHIP_FEATURES: false
 | 
					 | 
				
			||||||
            # APP_UNLOCK_ALL_SHIP_DECORATIONS: false
 | 
					 | 
				
			||||||
            # APP_UNLOCK_ALL_FLAVOUR_ITEMS: false
 | 
					 | 
				
			||||||
            # APP_UNLOCK_ALL_SKINS: false
 | 
					 | 
				
			||||||
            # APP_UNLOCK_ALL_CAPTURA_SCENES: false
 | 
					 | 
				
			||||||
            # APP_UNIVERSAL_POLARITY_EVERYWHERE: false
 | 
					 | 
				
			||||||
            # APP_UNLOCK_DOUBLE_CAPACITY_POTATOES_EVERYWHERE: false
 | 
					 | 
				
			||||||
            # APP_UNLOCK_EXILUS_EVERYWHERE: false
 | 
					 | 
				
			||||||
            # APP_UNLOCK_ARCANES_EVERYWHERE: false
 | 
					 | 
				
			||||||
            # APP_NO_DAILY_FOCUS_LIMIT: false
 | 
					 | 
				
			||||||
            # APP_NO_ARGON_CRYSTAL_DECAY: false
 | 
					 | 
				
			||||||
            # APP_NO_MASTERY_RANK_UP_COOLDOWN: false
 | 
					 | 
				
			||||||
            # APP_NO_VENDOR_PURCHASE_LIMITS: true
 | 
					 | 
				
			||||||
            # APP_NO_DEATH_MARKS: false
 | 
					 | 
				
			||||||
            # APP_NO_KIM_COOLDOWNS: false
 | 
					 | 
				
			||||||
            # APP_SYNDICATE_MISSIONS_REPEATABLE: false
 | 
					 | 
				
			||||||
            # APP_INSTANT_FINISH_RIVEN_CHALLENGE: false
 | 
					 | 
				
			||||||
            # APP_INSTANT_RESOURCE_EXTRACTOR_DRONES: false
 | 
					 | 
				
			||||||
            # APP_NO_RESOURCE_EXTRACTOR_DRONES_DAMAGE: false
 | 
					 | 
				
			||||||
            # APP_SKIP_CLAN_KEY_CRAFTING: false
 | 
					 | 
				
			||||||
            # APP_NO_DOJO_ROOM_BUILD_STAGE: false
 | 
					 | 
				
			||||||
            # APP_NO_DECO_BUILD_STAGE: false
 | 
					 | 
				
			||||||
            # APP_FAST_DOJO_ROOM_DESTRUCTION: false
 | 
					 | 
				
			||||||
            # APP_NO_DOJO_RESEARCH_COSTS: false
 | 
					 | 
				
			||||||
            # APP_NO_DOJO_RESEARCH_TIME: false
 | 
					 | 
				
			||||||
            # APP_FAST_CLAN_ASCENSION: false
 | 
					 | 
				
			||||||
            # APP_SPOOF_MASTERY_RANK: -1
 | 
					 | 
				
			||||||
        volumes:
 | 
					        volumes:
 | 
				
			||||||
            - ./docker-data/static:/app/static/data
 | 
					            - ./docker-data/conf:/app/conf
 | 
				
			||||||
 | 
					            - ./docker-data/static-data:/app/static/data
 | 
				
			||||||
            - ./docker-data/logs:/app/logs
 | 
					            - ./docker-data/logs:/app/logs
 | 
				
			||||||
        ports:
 | 
					        ports:
 | 
				
			||||||
            - 80:80
 | 
					            - 80:80
 | 
				
			||||||
            - 443:443
 | 
					            - 443:443
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Normally, the image is fetched from Docker Hub, but you can use the local Dockerfile by swapping the following two fields.
 | 
				
			||||||
 | 
					        # Works best when using `docker-compose up --force-recreate --build`.
 | 
				
			||||||
 | 
					        image: openwf/spaceninjaserver:latest
 | 
				
			||||||
 | 
					        #build: .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        depends_on:
 | 
					        depends_on:
 | 
				
			||||||
            - mongodb
 | 
					            - mongodb
 | 
				
			||||||
    mongodb:
 | 
					    mongodb:
 | 
				
			||||||
@ -66,3 +22,4 @@ services:
 | 
				
			|||||||
            MONGO_INITDB_ROOT_PASSWORD: spaceninjaserver
 | 
					            MONGO_INITDB_ROOT_PASSWORD: spaceninjaserver
 | 
				
			||||||
        volumes:
 | 
					        volumes:
 | 
				
			||||||
            - ./docker-data/database:/data/db
 | 
					            - ./docker-data/database:/data/db
 | 
				
			||||||
 | 
					        command: mongod --quiet --logpath /dev/null
 | 
				
			||||||
 | 
				
			|||||||
@ -1,24 +1,8 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
set -e
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Set up the configuration file using environment variables.
 | 
					if [ ! -f conf/config.json ]; then
 | 
				
			||||||
echo '{
 | 
						jq --arg value "mongodb://openwfagent:spaceninjaserver@mongodb:27017/" '.mongodbUrl = $value' /app/config.json.example > /app/conf/config.json
 | 
				
			||||||
	"logger": {
 | 
					fi
 | 
				
			||||||
	  "files": true,
 | 
					 | 
				
			||||||
	  "level": "trace",
 | 
					 | 
				
			||||||
	  "__valid_levels": "fatal, error, warn, info, http, debug, trace"
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
' > config.json
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
for config in $(env | grep "APP_")
 | 
					exec npm run start conf/config.json
 | 
				
			||||||
do
 | 
					 | 
				
			||||||
  var=$(echo "${config}" | tr '[:upper:]' '[:lower:]' | sed 's/app_//g' | sed -E 's/_([a-z])/\U\1/g' | sed 's/=.*//g')
 | 
					 | 
				
			||||||
  val=$(echo "${config}" | sed 's/.*=//g')
 | 
					 | 
				
			||||||
  jq --arg variable "$var" --arg value "$val" '.[$variable] += try [$value|fromjson][] catch $value' config.json > config.tmp
 | 
					 | 
				
			||||||
  mv config.tmp config.json
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
npm i --omit=dev
 | 
					 | 
				
			||||||
npm run build
 | 
					 | 
				
			||||||
exec npm run start
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user