name: Docker Deploy on: push: branches: - main workflow_dispatch: jobs: build-deploy: runs-on: docker-cli steps: - name: Build Docker image run: | set -eu rm -rf /tmp/demo-app-source git clone /mnt/d/docker/gitea/data/git/gitea-repositories/admin/demo-app.git /tmp/demo-app-source cd /tmp/demo-app-source if [ -n "${GITHUB_SHA:-}" ]; then git checkout "${GITHUB_SHA}" fi short_sha="$(git rev-parse --short=12 HEAD)" docker build --pull=false -t "local/demo-app:ci-${short_sha}" -t local/demo-app:ci . - name: Deploy with Docker Compose run: | set -eu cd /mnt/d/docker/demo-app docker compose up -d - name: Verify container run: | set -eu for i in $(seq 1 30); do status="$(docker inspect -f '{{if .State.Health}}{{.State.Health.Status}}{{else}}{{.State.Status}}{{end}}' docker-demo-app 2>/dev/null || true)" if [ "${status}" = "healthy" ] || [ "${status}" = "running" ]; then docker run --rm --network edge-net curlimages/curl:8.11.1 -fsS http://docker-demo-app:8080/ >/dev/null exit 0 fi sleep 2 done docker logs --tail 80 docker-demo-app || true exit 1