Compose can be production-ready for small apps
Docker Compose is practical for a single-server production deployment when the system is simple and the team understands the operational limits.
Hardening priorities
Use named volumes for persistent data, keep secrets in environment files outside Git, add restart policies, configure health checks, route traffic through Nginx, and verify that only necessary ports are exposed.
Recovery matters most
The real production test is restore. Schedule database dumps, keep off-server backups, document deployment commands, and practice a rollback before traffic grows.