Docker
Pull and run the official Timecrack Docker image from Docker Hub for a quick, consistent setup without manually installing PHP, MySQL, or a web server on your host machine.
About
This Docker image is built on PHP 8.2 with Apache and is designed to run the Laravel-based Timecrack application. On container startup, the entrypoint script automatically generates the Laravel .env file from Docker environment variables, runs database migrations, and caches the configuration for optimal performance.
Prerequisites
- Docker installed on your computer
Quick Start
From your command line, start a MySQL instance and then pull and run the app:
# Start a MySQL instance
docker run -d --name timecrack-db \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=timecrack \
mysql:8.0
# Pull and run the app
docker run -d --name timecrack-app \
--link timecrack-db:db \
-p 80:80 \
-e APP_URL=http://localhost \
-e DB_HOST=db \
-e DB_DATABASE=timecrack \
-e DB_USERNAME=root \
-e DB_PASSWORD=secret \
alextselegidis/timecrack:latest Docker Compose
You can use the following docker-compose.yml file to set up Timecrack with a MySQL database:
services:
timecrack:
image: alextselegidis/timecrack:latest
restart: always
ports:
- '80:80'
environment:
- APP_NAME=Timecrack
- APP_ENV=production
- APP_DEBUG=false
- APP_URL=http://localhost
- DB_CONNECTION=mysql
- DB_HOST=mysql
- DB_PORT=3306
- DB_DATABASE=timecrack
- DB_USERNAME=root
- DB_PASSWORD=secret
- MAIL_MAILER=smtp
- MAIL_HOST=smtp.example.org
- MAIL_PORT=587
- MAIL_USERNAME=
- MAIL_PASSWORD=
- MAIL_ENCRYPTION=tls
- MAIL_FROM_ADDRESS=info@example.org
- MAIL_FROM_NAME=Timecrack
volumes:
- timecrack-storage:/var/www/html/storage
mysql:
image: mysql:8.0
restart: always
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_DATABASE=timecrack
volumes:
- mysql:/var/lib/mysql
volumes:
timecrack-storage:
mysql: Environment Variables
The Docker image uses standard Laravel environment variables. All variables are passed through to the .env file that is generated on container startup.
Application
| Variable | Default | Description |
|---|---|---|
APP_NAME | Timecrack | Application name |
APP_ENV | production | Application environment (production, local, testing) |
APP_KEY | (auto-generated) | Application encryption key. If left empty, one is generated automatically on first start |
APP_DEBUG | false | Enable debug mode (true / false) |
APP_URL | http://localhost | The public URL of the application |
Logging
| Variable | Default | Description |
|---|---|---|
LOG_CHANNEL | stack | Laravel log channel (stack, single, daily, stderr, etc.) |
LOG_LEVEL | error | Minimum log level (debug, info, notice, warning, error, critical) |
Database
| Variable | Default | Description |
|---|---|---|
DB_CONNECTION | mysql | Database driver (mysql, pgsql, sqlite) |
DB_HOST | db | Database hostname |
DB_PORT | 3306 | Database port |
DB_DATABASE | timecrack | Database name |
DB_USERNAME | root | Database username |
DB_PASSWORD | secret | Database password |
Cache & Session
| Variable | Default | Description |
|---|---|---|
CACHE_DRIVER | file | Cache driver (file, redis, memcached, database) |
SESSION_DRIVER | file | Session driver (file, redis, database, cookie) |
SESSION_LIFETIME | 120 | Session lifetime in minutes |
QUEUE_CONNECTION | sync | Queue connection (sync, redis, database) |
BROADCAST_DRIVER | log | Broadcast driver (log, redis, pusher) |
FILESYSTEM_DISK | local | Default filesystem disk |
Redis
| Variable | Default | Description |
|---|---|---|
REDIS_HOST | 127.0.0.1 | Redis hostname |
REDIS_PASSWORD | null | Redis password |
REDIS_PORT | 6379 | Redis port |
| Variable | Default | Description |
|---|---|---|
MAIL_MAILER | smtp | Mail driver (smtp, sendmail, mailgun, ses, log) |
MAIL_HOST | mailpit | SMTP hostname |
MAIL_PORT | 1025 | SMTP port |
MAIL_USERNAME | null | SMTP username |
MAIL_PASSWORD | null | SMTP password |
MAIL_ENCRYPTION | null | SMTP encryption (tls, ssl, or null) |
MAIL_FROM_ADDRESS | hello@example.com | Sender email address |
MAIL_FROM_NAME | Timecrack | Sender name |
Startup Behavior
On every container start the entrypoint script will:
- Generate the Laravel
.envfile from the Docker environment variables. - Set correct permissions on
storage/andbootstrap/cache/. - Auto-generate an
APP_KEYif one was not provided. - Run
php artisan migrate --forceto apply pending database migrations. - Create the
storage:linksymbolic link. - Cache configuration, routes, and views for performance.
- Start the Apache web server.
Need Help?
If you run into issues with Docker:
- Check the Troubleshooting guide
- Visit the Docker Hub page
- Open an issue on GitHub