don't run su-exec if container starts as non-root

This commit is contained in:
David Andersen 2019-02-27 16:30:46 +00:00
parent 2c88f5e982
commit 324920cdf8
2 changed files with 14 additions and 4 deletions

View File

@ -7,3 +7,5 @@ services:
- "27015:27015/tcp" - "27015:27015/tcp"
volumes: volumes:
- /opt/factorio:/factorio - /opt/factorio:/factorio
# user: 845:845
# user: 1000:1000

View File

@ -2,7 +2,7 @@
set -e set -e
id id
#
FACTORIO_VOL=/factorio FACTORIO_VOL=/factorio
mkdir -p $FACTORIO_VOL mkdir -p $FACTORIO_VOL
mkdir -p $SAVES mkdir -p $SAVES
@ -12,15 +12,18 @@ mkdir -p $SCENARIOS
mkdir -p $SCRIPTOUTPUT mkdir -p $SCRIPTOUTPUT
if [ ! -f $CONFIG/rconpw ]; then if [ ! -f $CONFIG/rconpw ]; then
# Generate a new RCON password if none exists
echo $(pwgen 15 1) > $CONFIG/rconpw echo $(pwgen 15 1) > $CONFIG/rconpw
fi fi
if [ ! -f $CONFIG/server-settings.json ]; then if [ ! -f $CONFIG/server-settings.json ]; then
# Copy default settings if server-settings.json doesn't exist
cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json
fi fi
if [ ! -f $CONFIG/map-gen-settings.json ]; then if [ ! -f $CONFIG/map-gen-settings.json ]; then
# cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json # TODO: Need a valid map-gen-settings.json
# cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json
echo "{}" > $CONFIG/map-gen-settings.json echo "{}" > $CONFIG/map-gen-settings.json
fi fi
@ -29,10 +32,12 @@ if [ ! -f $CONFIG/map-settings.json ]; then
fi fi
if find -L $SAVES -iname \*.tmp.zip -mindepth 1 -print | grep -q .; then if find -L $SAVES -iname \*.tmp.zip -mindepth 1 -print | grep -q .; then
# Delete incomplete saves (such as after a forced exit)
rm -f $SAVES/*.tmp.zip rm -f $SAVES/*.tmp.zip
fi fi
if ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then if ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then
# Generate a new map if no save ZIPs exist
/opt/factorio/bin/x64/factorio \ /opt/factorio/bin/x64/factorio \
--create $SAVES/_autosave1.zip \ --create $SAVES/_autosave1.zip \
--map-gen-settings $CONFIG/map-gen-settings.json \ --map-gen-settings $CONFIG/map-gen-settings.json \
@ -40,10 +45,13 @@ if ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then
fi fi
if [ "$(id -u)" = '0' ]; then if [ "$(id -u)" = '0' ]; then
# Take ownership of factorio data if running as root
chown -R factorio:factorio $FACTORIO_VOL chown -R factorio:factorio $FACTORIO_VOL
# We want to drop to the factorio user
SU_EXEC="su-exec factorio"
fi fi
exec su-exec factorio /opt/factorio/bin/x64/factorio \ exec ${SU_EXEC} /opt/factorio/bin/x64/factorio \
--port $PORT \ --port $PORT \
--start-server-load-latest \ --start-server-load-latest \
--server-settings $CONFIG/server-settings.json \ --server-settings $CONFIG/server-settings.json \
@ -55,4 +63,4 @@ exec su-exec factorio /opt/factorio/bin/x64/factorio \
--server-banlist $CONFIG/server-banlist.json \ --server-banlist $CONFIG/server-banlist.json \
--rcon-password "$(cat $CONFIG/rconpw)" \ --rcon-password "$(cat $CONFIG/rconpw)" \
--server-id /factorio/config/server-id.json \ --server-id /factorio/config/server-id.json \
$@ "$@"