Create a basic HTTP server that returns the current date and time. Implement this server using multiple web frameworks, add tests, and containerize the application using Docker and Docker Compose.
Requirements:
Server Functionality:
[x] Endpoint: GET /datetime
[x] Response: Current date and time
Implementations:
Implement the server using:
[x] Standard library (net/http)
[x] Gin
Testing:
[x] Use Go's testing package and a HTTP testing library (e.g., httptest)
Docker:
[x] Create a Dockerfile for each framework implementation
[x] Ensure each Docker image is optimized for size (Multistage builds)
Docker Compose:
[x] Create a docker-compose.yml file that runs all framework versions
[x] Configure each service to run on a different port
Documentation:
[x] Provide a README with setup and running instructions
Makefile driven: You should use make and a Makefile to drive the steps of
[x] Building the binaries
[x] Formatting
[x] Linting
[x] Building the images
[x] Launching the containers
Optional Enhancements:
Implement graceful shutdown for each server
Acceptance Criteria:
[x] All implementations pass the same test suite
[x] Docker images build and run successfully
[x] Docker Compose file correctly orchestrates all services
[x] README provides clear instructions for running and testing the project
Create a basic HTTP server that returns the current date and time. Implement this server using multiple web frameworks, add tests, and containerize the application using Docker and Docker Compose.
Requirements:
Server Functionality:
Implementations:
Testing:
Optional Enhancements:
Acceptance Criteria: