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:
[x] Implement graceful shutdown for each server
Acceptance Criteria:
All implementations pass the same test suite
Docker images build and run successfully
Docker Compose file correctly orchestrates all services
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:
Docker:
Docker Compose:
Documentation:
Makefile driven: You should use make and a Makefile to drive the steps of
Optional Enhancements:
Acceptance Criteria: