Skip to content

Minecraft Server Using Docker Compose #7

Minecraft Server Using Docker Compose

Minecraft Server Using Docker Compose #7

name: Deployment Verification
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
deploy-and-test:
runs-on: ubuntu-latest
env:
NETWORK_ONE: minecraft-server-network
DOCKER_COMPOSE_FILE: minecraft-server-docker-compose.yml
APP_HOSTNAME: minecraft-server.heyvaldemar.net
COMPOSE_PROJECT_NAME: minecraft-server
MINECRAFT_PORT: 25565
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Create necessary Docker networks
run: |
docker network create $NETWORK_ONE || true
- name: Start up services using Docker Compose
run: docker compose -f $DOCKER_COMPOSE_FILE -p $COMPOSE_PROJECT_NAME up -d
- name: Modify /etc/hosts for internal routing
run: |
echo "127.0.0.1 $APP_HOSTNAME" | sudo tee -a /etc/hosts
- name: Print Docker Compose services status
run: docker ps
- name: Install Python and mcstatus
run: |
sudo apt-get update
sudo apt-get install -y python3-pip
pip3 install mcstatus
- name: Wait for the Minecraft Server to be ready
run: |
echo "Checking Minecraft server readiness at $APP_HOSTNAME:$MINECRAFT_PORT..."
timeout 5m bash -c 'while ! mcstatus $APP_HOSTNAME:$MINECRAFT_PORT status; do \
echo "Waiting for the Minecraft server to be ready..."; \
sleep 10; \
done'
- name: Inspect Network Configuration
run: |
docker network inspect $NETWORK_ONE
- name: Show container logs on failure
if: failure()
run: docker compose -f $DOCKER_COMPOSE_FILE -p $COMPOSE_PROJECT_NAME logs
- name: Shutdown Docker Compose services
if: always()
run: docker compose -f $DOCKER_COMPOSE_FILE -p $COMPOSE_PROJECT_NAME down