A Node.js microservices application designed to test Convox internal service routing and communication between services.
This application consists of three services:
- Frontend (
frontend/) - External service, publicly accessible - API (
api/) - Internal service, rack-only access - Database (
database/) - Internal service, rack-only access
- Port: 3000
- Access: Public
- Purpose: Main entry point that tests connectivity to internal services
- Key Endpoints:
GET /- Service information and available endpointsGET /test-internal- Tests communication with API and Database servicesGET /nslookup/:hostname- DNS lookup utilityGET /curl/:service- HTTP connectivity testing
- Port: 3000
- Access: Internal only
- Purpose: Mock API service with data operations
- Key Endpoints:
GET /data- Retrieve mock dataPOST /data- Create new mock dataGET /test-database- Test connectivity to database service
- Port: 3000
- Access: Internal only
- Purpose: Mock database service with user management
- Key Endpoints:
GET /status- Database status and metricsGET /users- Retrieve mock usersPOST /users- Create new usersGET /stats- Database statistics
-
Deploy to Convox:
convox deploy
-
Test the application:
- Access the frontend service via the public URL
- Use
/test-internalendpoint to verify internal service communication
Services communicate using Convox's internal DNS resolution:
http://<service>.<rack>-<app>.svc.cluster.local:3000
Example: http://api.production-myapp.svc.cluster.local:3000
The app automatically detects:
RACK- Convox rack nameAPP- Application nameSERVICE- Service namePORT- Service port (defaults to 3000)
- Network debugging tools installed in all containers
- DNS resolution testing via nslookup endpoints
- HTTP connectivity testing via curl endpoints
- Environment inspection for troubleshooting
- Mock data for testing service interactions
- Test internal service routing in Convox
- Verify DNS resolution between services
- Debug network connectivity issues
- Validate microservices communication patterns