Files
soroushasadi/.gitea/workflows/deploy.yml
T
soroush.asadi e5094b53ff
deploy / deploy (push) Failing after 2s
Fix deploy: stop old container before starting new one
Port 3000 was already allocated by the previous container from the
Next.js era. --remove-orphans only removes containers within the same
compose project, so the old one survived. Explicitly stop+rm the named
container before docker compose up so the port is always free.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 08:17:11 +03:30

70 lines
1.8 KiB
YAML

name: deploy
on:
push:
branches:
- main
jobs:
deploy:
runs-on: self-hosted
env:
DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1
steps:
- name: Checkout
env:
TOKEN: ${{ github.token }}
REF: ${{ github.ref }}
GIT_SSL_NO_VERIFY: "true"
run: |
git init
git remote remove origin 2>/dev/null || true
git remote add origin "${{ github.server_url }}/${{ github.repository }}.git"
git config http.extraheader "Authorization: Bearer ${TOKEN}"
git fetch --depth=1 origin "${REF}"
git checkout FETCH_HEAD
- name: Create Environment File
run: |
cat > .env << EOF
ADMIN_PASSWORD=${{ secrets.ADMIN_PASSWORD }}
RESEND_API_KEY=${{ secrets.RESEND_API_KEY }}
CONTACT_INBOX=${{ secrets.CONTACT_INBOX }}
CONTACT_FROM=${{ secrets.CONTACT_FROM }}
EOF
- name: Build Container
run: docker compose build
- name: Stop Existing Container
run: |
docker stop soroushasadi-site 2>/dev/null || true
docker rm soroushasadi-site 2>/dev/null || true
- name: Deploy
run: docker compose up -d --remove-orphans
- name: Wait For Health Check
run: |
for i in $(seq 1 30); do
STATUS=$(docker inspect \
--format='{{.State.Health.Status}}' \
soroushasadi-site 2>/dev/null)
echo "Status: $STATUS"
if [ "$STATUS" = "healthy" ]; then
echo "Deployment successful"
exit 0
fi
sleep 5
done
docker logs soroushasadi-site --tail 100
exit 1
- name: Cleanup
if: success()
run: docker image prune -f