Skip to content

Update docker-compose.test.yml #35

Update docker-compose.test.yml

Update docker-compose.test.yml #35

Workflow file for this run

name: Test Dockerfile
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
name: Test on Ubuntu
runs-on: ubuntu-latest
steps:
- name: Check Docker daemon
run: docker info || sudo service docker start
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3.7.1
- name: Install Docker Compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/v2.30.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
- name: Create test docker-compose file
run: |
cat > docker-compose.test.yml << 'EOF'
services:
humhub:
build: .
ports:
- "80:80"
- "443:443"
environment:
- PHP_MEMORY_LIMIT=512M
- PHP_MAX_EXECUTION_TIME=300
- HUMHUB_DB_HOST=db
- HUMHUB_DB_NAME=humhub_test
- HUMHUB_DB_USER=humhubuser
- HUMHUB_DB_PASSWORD=humhubpassword
- SERVER_NAME=:80
- PHP_INI_MEMORY_LIMIT=512M
- PHP_INI_MAX_EXECUTION_TIME=300
depends_on:
- db
networks:
- humhub_test_network
db:
image: mysql:8
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: humhub_test
MYSQL_USER: humhubuser
MYSQL_PASSWORD: humhubpassword
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "humhubuser", "-phumhubpassword"]
interval: 5s
timeout: 5s
retries: 10
networks:
- humhub_test_network
networks:
humhub_test_network:
driver: bridge
EOF
- name: Build containers
run: docker-compose -f docker-compose.test.yml build --no-cache
- name: Start containers and debug
run: |
docker-compose -f docker-compose.test.yml up -d
echo "Waiting for containers to start..."
sleep 10
echo "Docker compose ps:"
docker-compose -f docker-compose.test.yml ps
echo "Docker compose logs:"
docker-compose -f docker-compose.test.yml logs
echo "Container status:"
docker ps -a
- name: Debug container startup
if: failure()
run: |
echo "Checking humhub container logs..."
docker-compose -f docker-compose.test.yml logs humhub
echo "Checking container filesystem..."
docker-compose -f docker-compose.test.yml exec -T humhub ls -la /app || true
echo "Checking Caddyfile..."
docker-compose -f docker-compose.test.yml exec -T humhub cat /etc/caddy/Caddyfile || true
echo "Checking FrankenPHP processes..."
docker-compose -f docker-compose.test.yml exec -T humhub ps aux || true
- name: Verify MySQL is ready
run: |
echo "Waiting for MySQL to be ready..."
timeout 60s bash -c 'until docker-compose -f docker-compose.test.yml exec -T db mysqladmin -u root -prootpassword ping; do sleep 1; done'
- name: Grant MySQL privileges
run: |
RETRIES=5
until docker-compose -f docker-compose.test.yml exec -T db mysql -u root -prootpassword -e "CREATE USER IF NOT EXISTS 'humhubuser'@'%' IDENTIFIED BY 'humhubpassword';" || [ $RETRIES -eq 0 ]; do
echo "Retrying MySQL user creation..."
((RETRIES--))
sleep 5
done
docker-compose -f docker-compose.test.yml exec -T db mysql -u root -prootpassword -e "GRANT ALL PRIVILEGES ON humhub_test.* TO 'humhubuser'@'%'; FLUSH PRIVILEGES;"
- name: Verify PHP and FrankenPHP
run: |
docker-compose -f docker-compose.test.yml exec -T humhub php -v || echo "::error::PHP verification failed"
docker-compose -f docker-compose.test.yml exec -T humhub frankenphp version || echo "::error::FrankenPHP verification failed"
- name: Verify PHP extensions
run: |
docker-compose -f docker-compose.test.yml exec -T humhub php -m || echo "::error::Unable to list PHP extensions"
- name: Verify HumHub files
run: |
docker-compose -f docker-compose.test.yml exec -T humhub ls -la /app || echo "::error::HumHub files verification failed"
docker-compose -f docker-compose.test.yml exec -T humhub ls -la /app/protected/config || echo "::error::Config directory not found"
docker-compose -f docker-compose.test.yml exec -T humhub ls -la /app/protected/modules || echo "::error::Modules directory not found"
docker-compose -f docker-compose.test.yml exec -T humhub ls -la /app/protected || echo "::error::Protected directory not found"
- name: Verify cron setup
run: |
docker-compose -f docker-compose.test.yml exec -T humhub ps aux | grep cron || echo "::error::Cron service is not running"
docker-compose -f docker-compose.test.yml exec -T humhub cat /etc/cron.d/humhub || echo "::error::Crontab is missing or not configured correctly"
docker-compose -f docker-compose.test.yml exec -T humhub ls -la /usr/local/bin/humhub-cron.sh || echo "::error::Cron script not found"
- name: Show container logs
if: always()
run: docker-compose -f docker-compose.test.yml logs
- name: Cleanup
if: always()
run: |
docker-compose -f docker-compose.test.yml down -v
docker-compose -f docker-compose.test.yml rm -f -v