Files
knet/.github/workflows/docker-build-self.yml
Juraj Kubrican b0c9da758d healthcheck 2
2025-01-10 13:50:36 +01:00

58 lines
1.8 KiB
YAML

name: Build and Push Docker Image
on:
push:
branches:
- main
- test
jobs:
build-and-push:
runs-on: self-hosted
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Build Docker image
run: |
IMAGE_NAME="ghcr.io/jurajkubrican/knet/go-web-server"
RUN_NUMBER="${{ github.run_number }}"
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-go-web-server)" ]; then
docker stop temp-go-web-server || true
docker rm temp-go-web-server || true
fi
- name: Run temporary container for health check
run: |
docker run -d --name temp-go-web-server -p 54322:54321 go-web-server:latest
sleep 10 # Wait for the container to start
if curl -f http://localhost:54322/health; then
echo "Health check passed"
docker stop temp-go-web-server
docker rm -f temp-go-web-server
else
echo "Health check failed"
docker logs temp-go-web-server
docker stop temp-go-web-server
docker rm -f temp-go-web-server
exit 1
fi
- name: Stop and remove current container
run: |
if [ "$(docker ps -q -f name=go-web-server)" ]; then
docker stop go-web-server
docker rm go-web-server
fi
- name: Run new container
run: |
IMAGE_NAME="ghcr.io/jurajkubrican/knet/go-web-server"
docker run -d --name go-web-server -p 54321:54321 -v "$(pwd)/data:/app/data" "$IMAGE_NAME:latest"