This guide explains how to run the Visual Tangible Artefacts application using Docker.
- Docker (version 20.10 or later)
- Docker Compose (version 2.0 or later)
-
Start all services:
docker-compose up -d
-
Access the services:
- Frontend: http://localhost:8080
- Backend API: http://localhost:5192
- Backend Swagger: http://localhost:5192/swagger
- MySQL: localhost:3306
-
Stop all services:
docker-compose down
-
Stop and remove volumes (clean database):
docker-compose down -v
-
Start and force recreate:
-
docker-compose up -d --build --force-recreate
- Container:
vta-mysql - Port: 3306
- Database:
vta_dev - User:
vta_user - Password:
vta_password - Root Password:
root_password
- Container:
vta-backend - Port: 5192 (maps to container port 8080)
- Environment: Development
- Connection String: Configured automatically to connect to MySQL
- Container:
vta-frontend - Port: 8080 (maps to container port 80)
- Technology: Flutter Web served by nginx
You can customize the configuration by creating a .env file in the root directory. See .env.example for available options.
Important: Change the JWT secret in production!
# All services
docker-compose logs -f
# Specific service
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose logs -f mysql# Rebuild all
docker-compose up -d --build
# Rebuild specific service
docker-compose up -d --build backend
docker-compose up -d --build frontenddocker exec -it vta-mysql mysql -u vta_user -pvta_password vta_dev# Backend
docker exec -it vta-backend /bin/bash
# Frontend
docker exec -it vta-frontend /bin/shdocker-compose psThe database schema will be created automatically when the backend first connects to MySQL. The backend uses Entity Framework Core's EnsureCreated() or migrations to set up the database.
If you need to reset the database:
docker-compose down -v
docker-compose up -d- Ensure the MySQL container is healthy:
docker-compose ps - Check MySQL logs:
docker-compose logs mysql - The backend waits for MySQL health check before starting
- Update
Frontend/vta_app/assets/cfg/app_settings.jsonto point tohttp://localhost:5192/api/ - Or access from host:
http://localhost:5192/api/
docker exec -it vta-backend chmod -R 777 /app/Assets- Change default passwords in
docker-compose.ymlor use a.envfile - Set a strong JWT secret (minimum 32 characters)
- Use Docker secrets for sensitive data
- Enable HTTPS with reverse proxy (nginx/traefik)
- Set up persistent volumes with proper backup strategy
- Review security settings for MySQL and API