{"id":31287942,"url":"https://github.com/akramgalal/containerizing-multi-tier-java-application","last_synced_at":"2026-04-28T12:33:09.264Z","repository":{"id":313577253,"uuid":"1047976765","full_name":"AkramGalal/containerizing-multi-tier-java-application","owner":"AkramGalal","description":"This repository demonstrates the containerization of a multi-tier Java web application by creating Docker images for each microservice, i.e., load balancer (Nginx), application server, database (MariaDB), cashing engine (Memcached), and massage queue (RabbitMQ), then deploy them as containers.","archived":false,"fork":false,"pushed_at":"2025-09-20T22:58:32.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-20T23:35:04.930Z","etag":null,"topics":["docker","docker-compose","docker-container","mariadb","memcached","nginx","rabbitmq","tomcat"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AkramGalal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-31T16:43:57.000Z","updated_at":"2025-09-20T22:58:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"adbedf1f-d171-4d78-9b00-9a67ffbd33d1","html_url":"https://github.com/AkramGalal/containerizing-multi-tier-java-application","commit_stats":null,"previous_names":["akramgalal/containerizing-multi-tier-java-application"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AkramGalal/containerizing-multi-tier-java-application","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AkramGalal%2Fcontainerizing-multi-tier-java-application","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AkramGalal%2Fcontainerizing-multi-tier-java-application/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AkramGalal%2Fcontainerizing-multi-tier-java-application/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AkramGalal%2Fcontainerizing-multi-tier-java-application/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AkramGalal","download_url":"https://codeload.github.com/AkramGalal/containerizing-multi-tier-java-application/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AkramGalal%2Fcontainerizing-multi-tier-java-application/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276740324,"owners_count":25696334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-24T02:00:09.776Z","response_time":97,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","docker-container","mariadb","memcached","nginx","rabbitmq","tomcat"],"created_at":"2025-09-24T11:36:18.064Z","updated_at":"2025-09-24T11:36:18.980Z","avatar_url":"https://github.com/AkramGalal.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Containerizing Multi-tier Java Web Application\nThis project demonstrates the containerization of a multi-tier Java web application by creating Docker images for each microservice, including:\n- Load balancer (Nginx)  \n- Application server (Tomcat/Java)  \n- Database (MariaDB/MySQL)  \n- Caching engine (Memcached)  \n- Message queue (RabbitMQ)  \n\nThe application is deployed as containers and orchestrated with Docker Compose.\n\n## Project Setup\n### 1. Create Docker Images for Microservices\n### 1.1 Application Server (Tomcat)\n- Use a Tomcat image matching your Java version (Java 11).  \n- Build the image from Dockerfile\n ```bash\n docker build -t app:v1 .\n ```\n\n### 1.2 Database (MySQL)\n- Use MySQL image (version 8.0.33).  \n- Build the image from Dockerfile\n ```bash\n docker build -t db:v1 .\n ```\n\n### 1.3 Nginx Load Balancer\n- Use the latest Nginx image.  \n- Create configuration file `nginx.conf`.\n- Build the image from Dockerfile\n ```bash\n docker build -t lb:v1 .\n ```\n\n### 1.4 RabbitMQ\n- Use the latest RabbitMQ image:\n ```bash\n docker pull rabbitmq\n ```\n\n### 1.5 Memcached\n- Use the latest Memcached image:\n ```bash\n docker pull memcached\n ```\n\n## 2. Push Images to Docker Hub\n  1. Login to Docker Hub:\n  ```bash\n  docker login -u \u003cyour-username\u003e\n  ```\n  2. Tag images for Docker Hub:\n  ```bash\n  docker tag \u003clocal-image:tag\u003e \u003cusername/repo:tag\u003e\n  ```\n  3. Push images:\n  ```bash\n  docker push \u003cusername/repo:tag\u003e\n  ```\n\n## 3. Docker Compose Setup\n  - Create `docker-compose.yml`\n  - Start the multi-tier application using the docker compose file.\n    ```bash\n    docker compose up -d\n    ```\n\n## 5. Testing\n  - Ensure all containers are running:\n    ```bash\n    docker ps -a\n    ```\n    \u003cimg width=\"3345\" height=\"859\" alt=\"Screenshot 2025-09-21 020407\" src=\"https://github.com/user-attachments/assets/76f5f1b9-025c-430e-a397-8d074f705372\" /\u003e\n  \n  - Access the application from the localhost IP at `http:192.168.242.130`\n    \n    \u003cimg width=\"3763\" height=\"1924\" alt=\"Screenshot 2025-09-21 020609\" src=\"https://github.com/user-attachments/assets/b5bb885d-7552-45d8-9587-d8086da30536\" /\u003e\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakramgalal%2Fcontainerizing-multi-tier-java-application","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakramgalal%2Fcontainerizing-multi-tier-java-application","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakramgalal%2Fcontainerizing-multi-tier-java-application/lists"}