name: Deploy on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # The job container only sees its own checkout — the live app lives # at /mnt/user/appdata/card-grader on the host, bind-mounted into # this container at the same path (see runner container.options) so # `docker compose`'s relative volume paths resolve against the real # host directory rather than an ephemeral one. `data/` holds the # production DB and photos and must survive every deploy. - name: Sync source to deploy path run: | rsync -a --delete \ --exclude='.git' \ --exclude='data' \ ./ /mnt/user/appdata/card-grader/ - name: Rebuild and restart working-directory: /mnt/user/appdata/card-grader run: docker compose up -d --build