[Unit] Description=Minecraft server based on Thermos Requires=docker.service After=docker.service [Service] Type=idle Restart=always RestartSec=15 # Setup desired name and image Environment=CONTAINER_NAME=thermos Environment=CONTAINER_IMAGE=aranokai/openjdk-minecraft_thermos:latest ExecStartPre=-/usr/bin/docker kill ${CONTAINER_NAME} ExecStartPre=-/usr/bin/docker rm -f ${CONTAINER_NAME} # Get fresh image ExecStartPre=-/usr/bin/docker pull ${CONTAINER_IMAGE} # Will fail, if data container already exists, so ignoring... ExecStartPre=-/usr/bin/docker create --name ${CONTAINER_NAME}-data ${CONTAINER_IMAGE} # Fix posible divergence in the permissions ExecStartPre=/usr/bin/docker run --rm --volumes-from ${CONTAINER_NAME}-data --user root --entrypoint sh ${CONTAINER_IMAGE} -c 'chown -R $${THERMOS_USR}.$${THERMOS_USR} $${THERMOS_WORKDIR}' # Run with data container attached #NOTE: need to spawn console ('-t'), otherwise tmux will fail ExecStart=/usr/bin/docker run -t --name ${CONTAINER_NAME} -p 25565:25565/tcp --volumes-from ${CONTAINER_NAME}-data ${CONTAINER_IMAGE} ExecStop=/usr/bin/docker stop --time 30 ${CONTAINER_NAME} [Install] WantedBy=multi-user.target