Files
knet/.github/workflows/docker-build-self.yml
JurajKubrican a393b03d98 drop sqlite
2025-08-04 15:22:34 +02:00

63 lines
1.8 KiB
YAML

name: Build and Push Docker Image
on:
push:
branches:
- main
jobs:
build-and-push:
runs-on: self-hosted
env:
IMAGE_NAME: ${{ github.event.repository.name }}
PORT: 54321
TEST_PORT: 54322
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Build Docker image
run: |
docker build -t "$IMAGE_NAME:latest" -t "$IMAGE_NAME:${{ github.run_number }}" .
- name: Ensure no existing temp container
run: |
if [ "$(docker ps -aq -f name=temp-$IMAGE_NAME)" ]; then
docker stop temp-$IMAGE_NAME || true
docker rm temp-$IMAGE_NAME || true
fi
- name: Run temporary container for health check
run: |
docker run -d --name temp-$IMAGE_NAME -p $TEST_PORT:54321 $IMAGE_NAME:latest
sleep 10 # Wait for the container to start
if curl -f http://localhost:$TEST_PORT/health; then
echo "Health check passed"
docker stop temp-$IMAGE_NAME
docker rm temp-$IMAGE_NAME
else
echo "Health check failed"
docker logs temp-$IMAGE_NAME
docker stop temp-$IMAGE_NAME
docker rm temp-$IMAGE_NAME
exit 1
fi
- name: Stop and remove current container
run: |
if [ "$(docker ps -q -f name=$IMAGE_NAME)" ]; then
docker stop $IMAGE_NAME || true
docker rm $IMAGE_NAME || true
fi
- name: Run new container
run: |
docker run -d --name $IMAGE_NAME -p $PORT:54321 --restart=always \
-v "/volume2/docker/$IMAGE_NAME/data:/app/data" \
"$IMAGE_NAME:latest"
- name: Cleanup
run: |
docker image prune -a -f