My AWS Developer Experience Month
I’m probably getting into this very late, but work, work, work. It’s about I week ago, I’m about take on a devops challenge I found online. For anyone looking to try it out too
Requirements:
1. Fork the Repository:
Create a fork of this https://github.com/hngprojects/devops-stage-2 to add the necessary Docker and proxy configuration files.
2. Dockerization:
Write Dockerfiles to containerize both the React frontend and FastAPI backend. Ensure each service can be built and run locally in their respective containers.
3. Configure Traefik, HaProxy or Nginx Proxy Manager to:
- Serve the frontend and backend on the same host machine port (80).
- Serve the frontend on the root (/).
- Proxy /api on the backend to /api on the main domain.
- Proxy /docs on the backend to /docs on the main domain.
- Proxy /api on the backend to /api on the main domain.
4. Database Configuration:
Configure the application to use a PostgreSQL database. Ensure the database is properly set up and connected.
5. Adminer Setup:
Configure Adminer to run on port 8080. Ensure Adminer is accessible via the subdomain db.domain and is properly connected to the postgres database.
6. Proxy Manager Setup:
Configure the proxy manager to run on port 8090. Ensure the proxy manager is accessible via the subdomain proxy.domain.
7. Cloud Deployment:
Deploy your Dockerized application to an AWS EC2 instance. Set up a domain for your application. If you don't have a domain, get a free subdomain from Afraid DNS. Configure HTTP to redirect to HTTPS. Configure www to redirect to non-www.
Additional Instructions:
There is a minimal README with simple instructions on starting the application in the repository. However, you are required to improve all the README files with well-detailed instructions on how to deploy the app, both manually and using Docker.
Challenge accepted, I study the codebase and get to writing the dockerfiles. Written them both but now no dice they run with errors, No build. Make some changes and still nothing and then I look to my Amazon Q extension just waist to be used.
And now it’s easier we breakdown the errors, they seem to be coming from some required packages. And basically, I grind for the next couple days till I’ve solved all problems. Even down to the cloud provider upload, which you guessed it, is AWS.
I spin up an ubuntu instance and install docker, Q even reminds me to not forget to use “sudo” in front of my commands. And to shift focus to AWS itself now, soo powerful. you can basically do all you want, I even tried spinning up a windows instance to test my container on a windows instance. I’ve created a launch template too that helps me easily start up a server for when I want to show my project in action.
I eventually plan to use the LightSail container service for testing it out on a non-docker container because of its much cleaner and faster interface.
Finally, I wrapped it all up—got the containers for the backend, frontend, database, and admin interface up and running. Configured Nginx Proxy Manager to route the traffic properly. After some final tweaks, I spun everything up with docker-compose up --build
—and boom, it worked. Frontend accessible, backend running, and database connected.
In the end, this challenge was all about managing the details: from Poetry and Dockerfile config, to fixing Docker Compose and routing issues. With the right fixes in place, the entire setup was smooth, modular, and scalable. And that’s how Q helped get this full-stack app Dockerized and deployed.
Subscribe to my newsletter
Read articles from Olorode Rotimi directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by