apiVersion: batch/v1
kind: Job
metadata:
  name: start-server
spec:
  template:
    metadata:
      labels:
        app: minecraft-server
    spec:
      restartPolicy: OnFailure
      initContainers:
      - name: copy-data-to-local
        image: alpine
        command: ["/bin/sh"]
        args: ["-c", "cp -r /data/* /local-data/"]
        volumeMounts:
        - name: local-data
          mountPath: /local-data
        - name: minecraft-data
          mountPath: /data
      containers:
      - name: minecraft-server
        image: minecraft
        resources:
          limits:
            memory: "11000Mi"
            cpu: "5"
          requests:
            memory: "1500Mi"
            cpu: "500m"
        ports:
        - containerPort: 25565
        env:
        - name: EULA
          value: "TRUE"
        - name: TYPE
          value: "AUTO_CURSEFORGE"
        - name: CF_API_KEY
          valueFrom:
            secretKeyRef:
              name: curseforge-api
              key: key
        - name: CF_PAGE_URL
          value: "https://www.curseforge.com/minecraft/modpacks/vault-hunters-1-18-2/files/5925838"
        - name: VERSION
          value: "1.18.2"
        - name: INIT_MEMORY
          value: "1G"
        - name: MAX_MEMORY
          value: "10G"
        - name: MOTD
          value: "VaultHunters baby!"
        - name: ENABLE_RCON
          value: "false"
        - name: CREATE_CONSOLE_IN_PIPE
          value: "true"
        - name: ONLINE_MODE
          value: "false"
        - name: ENABLE_AUTOSTOP
          value: "true"
        - name: AUTOSTOP_TIMEOUT_EST
          value: "1800" # stop 30 min after last disconnect
        volumeMounts:
        - name: local-data
          mountPath: /data

      - name: copy-data-to-persistent
        image: rsync
        command: ["/bin/sh"]
        # args: ["-c", "sleep infinity"]
        args: ["/run-rsync.sh"]
        volumeMounts:
        - name: local-data
          mountPath: /local-data
        - name: minecraft-data
          mountPath: /persistent-data
        - name: rsync-config
          mountPath: /run-rsync.sh
          subPath: run-rsync.sh


      volumes:
      - name: minecraft-data
        persistentVolumeClaim:
          claimName: minecraft-data
      - name: local-data
        emptyDir: {}
      - name: rsync-config
        configMap:
          name: rsync-config
          defaultMode: 0777