factorio-docker/0.17/files/docker-entrypoint.sh

67 lines
1.9 KiB
Bash
Raw Normal View History

2019-02-26 20:11:21 +01:00
#!/bin/sh -x
set -e
id
2019-02-26 20:44:26 +01:00
FACTORIO_VOL=/factorio
mkdir -p $FACTORIO_VOL
2019-02-26 20:11:21 +01:00
mkdir -p $SAVES
mkdir -p $CONFIG
mkdir -p $MODS
mkdir -p $SCENARIOS
mkdir -p $SCRIPTOUTPUT
if [ ! -f $CONFIG/rconpw ]; then
# Generate a new RCON password if none exists
2019-02-26 20:11:21 +01:00
echo $(pwgen 15 1) > $CONFIG/rconpw
fi
if [ ! -f $CONFIG/server-settings.json ]; then
# Copy default settings if server-settings.json doesn't exist
2019-02-26 20:11:21 +01:00
cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json
fi
if [ ! -f $CONFIG/map-gen-settings.json ]; then
2019-02-27 20:06:47 +01:00
cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json
2019-02-26 20:11:21 +01:00
fi
if [ ! -f $CONFIG/map-settings.json ]; then
cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json
fi
if find -L $SAVES -iname \*.tmp.zip -mindepth 1 -print | grep -q .; then
# Delete incomplete saves (such as after a forced exit)
2019-02-26 20:11:21 +01:00
rm -f $SAVES/*.tmp.zip
fi
2019-02-26 20:44:26 +01:00
if [ "$(id -u)" = '0' ]; then
# Take ownership of factorio data if running as root
2019-02-26 20:44:26 +01:00
chown -R factorio:factorio $FACTORIO_VOL
2019-02-27 19:25:54 +01:00
# Make sure we own temp
2019-02-27 20:45:13 +01:00
#mkdir -p /opt/factorio/temp
#chown -R factorio:factorio /opt/factorio/temp
2019-02-27 19:25:54 +01:00
# Drop to the factorio user
SU_EXEC="su-exec factorio"
2019-02-26 20:44:26 +01:00
fi
2019-02-27 20:45:13 +01:00
if ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then
# Generate a new map if no save ZIPs exist
${SU_EXEC} /opt/factorio/bin/x64/factorio \
--create $SAVES/_autosave1.zip \
--map-gen-settings $CONFIG/map-gen-settings.json \
--map-settings $CONFIG/map-settings.json
fi
exec ${SU_EXEC} /opt/factorio/bin/x64/factorio \
2019-02-26 20:11:21 +01:00
--port $PORT \
--start-server-load-latest \
--server-settings $CONFIG/server-settings.json \
--server-banlist $CONFIG/server-banlist.json \
--rcon-port $RCON_PORT \
2019-02-26 22:12:51 +01:00
--server-whitelist $CONFIG/server-whitelist.json \
--use-server-whitelist \
2019-02-27 02:26:59 +01:00
--server-adminlist $CONFIG/server-adminlist.json \
2019-02-26 20:11:21 +01:00
--rcon-password "$(cat $CONFIG/rconpw)" \
--server-id /factorio/config/server-id.json \
"$@"