SAHL CMS is a web management application for hockey players, teams, and competitions used by the Slovak Amateur Hockey League.
The application is built with PHP (Nette Framework) and is containerized using Docker for local development and deployment.
- Player management
- Team and roster administration
- League and competition management
- Match results and statistics
- Administrative backend
- PHP
- Nette Framework
- Nginx
- PostgreSQL
- Docker & Docker Compose
- Composer
- pgAdmin
git clone https://github.com/alexandervalach/sahl-cms.git
cd sahl-cmsCreate a .env file in the project root:
# Web
WEB_PORT=8080
APACHE_RUN_USER=www-data
APACHE_RUN_GROUP=www-data
# Development for Debug
NETTE_DEBUG=1
# Database
DB_HOST=db
DB_PORT=5432
DB_USER=sahl
# Update the password
DB_PASSWORD=secret
DB_NAME=sahl
# PostgreSQL
POSTGRES_PORT=5432
# pgAdmin
PGADMIN_PORT=5050
PGADMIN_DEFAULT_EMAIL=admin@sample.com
# Update the password
PGADMIN_DEFAULT_PASSWORD=admindocker-compose up --build -dThe application will be available at:
http://localhost:8080
pgAdmin (optional) will be available at:
http://localhost:5050
Any .sql files placed in the /db directory will be executed automatically when the PostgreSQL container is created for the first time.
docker exec -i postgres psql \
-U sahl \
-d sahl < database.sqlCreate:
app/config/config.local.neon
Example:
database:
dsn: "pgsql:host=db;port=5432;dbname=sahl"
user: %env.DB_USER%
password: %env.DB_PASSWORD%
parameters:
debugMode: trueThe following directories must be writable by the web server:
/log
/temp
These are mapped to Docker volumes:
log_datatemp_data
No manual permission changes are required.
git pull
docker-compose up --build -ddocker exec -it sahl-cms rm -rf /var/www/html/temp/cacheView logs
docker-compose logs -fAccess web container
docker exec -it sahl-cms bashStop containers
docker-compose down- PHP with Nginx
- Nette application
- Composer dependencies installed during image build
- PostgreSQL
- Persistent storage via
pgdatavolume
- Web-based PostgreSQL administration tool
- Intended for development use