{"id":21008506,"url":"https://github.com/samuelnunesdev/docker-portifolio","last_synced_at":"2026-05-03T18:35:14.687Z","repository":{"id":186330466,"uuid":"616183403","full_name":"SamuelNunesDev/docker-portifolio","owner":"SamuelNunesDev","description":"Projeto criado para praticar o uso do docker","archived":false,"fork":false,"pushed_at":"2023-03-19T22:24:15.000Z","size":10,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-27T03:42:06.748Z","etag":null,"topics":["cluster","docker","docker-compose","docker-swarm","nginx"],"latest_commit_sha":null,"homepage":"http://portifolio.samuelnunesdev.com/","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/SamuelNunesDev.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}},"created_at":"2023-03-19T20:56:30.000Z","updated_at":"2023-03-19T22:12:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"d824341d-1ed3-4b89-ae9c-5621132c797f","html_url":"https://github.com/SamuelNunesDev/docker-portifolio","commit_stats":null,"previous_names":["samuelnunesdev/docker-portifolio"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SamuelNunesDev/docker-portifolio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuelNunesDev%2Fdocker-portifolio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuelNunesDev%2Fdocker-portifolio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuelNunesDev%2Fdocker-portifolio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuelNunesDev%2Fdocker-portifolio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SamuelNunesDev","download_url":"https://codeload.github.com/SamuelNunesDev/docker-portifolio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SamuelNunesDev%2Fdocker-portifolio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32580056,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cluster","docker","docker-compose","docker-swarm","nginx"],"created_at":"2024-11-19T09:12:43.414Z","updated_at":"2026-05-03T18:35:14.669Z","avatar_url":"https://github.com/SamuelNunesDev.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Docker Portifólio\n  Projeto criado para praticar o uso do docker. Se trata de cluster para exemplificar como criar um ambiente altamente escalável com balanceamento de carga e gerenciamento de containers (principalmente disponibilidade) com o docker swarm. O conteúdo em produção está disponível no site -\u003e [portifolio.samuelnunesdev.com](http://portifolio.samuelnunesdev.com/)\n## Conteúdo no ambiente de Produção:\n- Quatro nós criados a partir da AWS EC2 com uma VPC, sub-rede (para conversarem entre si), um grupo de segurança e um NFS para formar o `swarm`, sendo:\n  - O `leader` com disponibilidade `drain`, resposável apenas para o controle do swarm e como servidor dos volumes utilizando NFS.\n  - Dois nós gerenciadores/trabalhadores que podem receber containers e servem de backup caso o `leader` fique indisponível.\n  - Um nó apenas para trabalho, responsável pelos bancos de dados com volume fixado.\n- Um `registry` para guardar imagens personalizadas.\n- Um proxy reverso utilizando o nginx para balanceamento de carga.\n- O [swarmpit](https://swarmpit.io/) para monitoramento do swarm.\n- Algumas imagens como [apache](https://hub.docker.com/_/httpd), [postgres](https://hub.docker.com/_/postgres) e o [php-apache](https://hub.docker.com/r/webdevops/php-apache) para servir algumas aplicações que em um futuro próximo serão migradas.\n- Route 53 para gerenciamento de domínios.\n## Instalação:\n- Adicionar labels em nós que receberão container cujo o volume é fixado\n  ```bash\n  $ docker node ls\n  $ docker node update --label-add gerenciador=2 nome-ou-id-de-um-no-gerenciador-exceto-leader\n  $ docker node update --label-add trabalhador=1 nome-ou-id-de-um-no-apenas-trabalhador```\n- Instalando o `registry`\n  ``` bash\n  $ docker stack deploy -c registry/docker-compose.yml\n  ```\n- Criando o build do proxy\n  ```bash\n  $ cd proxy-portifolio \u0026\u0026 docker build -t localhost:5000/proxy-portifolio:1.0 .\n  ```\n- Instalando o swarmpit\n  ```bash\n  $ git clone https://github.com/swarmpit/swarmpit -b master \n  $ docker stack deploy -c swarmpit/docker-compose.yml swarmpit \n  ```\n- Instalando os demais projetos (proxy, apache, php, banco de dados e etc)\n  ```bash\n  $ docker stack deploy -c portifolio/docker-compose.yml portifolio\n  ```\n- Alterando a disponibilidade do nó `leader`\n  ```bash\n  $ docker node update --availability drain nome-ou-id\n  ```\n- Instalar e configurar o NFS servidor no nó `leader`\n  ```bash\n  $ apt-get -y install nfs-server\n  $ nano /etc/exports\n  ```\n  - Adicione estas duas linhas no final do arquivo e salve o arquivo:\n    ```bash\n    /var/lib/docker/volumes/apache/_data *(rw,sync,no_subtree_check)\n    /var/lib/docker/volumes/abraco-quentinho/_data *(rw,sync,no_subtree_check)\n    ```\n  - Após adicionar as linhas deve-se exportar os diretórios\n    ```bash\n    $ exportfs -ar\n    ```\n- Instalar e configurar o NFS cliente nos demais nós\n  ```bash\n  $ apt-get -y install nfs-common\n  $ mount ip-no-leader:/var/lib/docker/volumes/apache/_data /var/lib/docker/volumes/apache/_data\n  $ mount ip-no-leader:/var/lib/docker/volumes/abraco-quentinho/_data /var/lib/docker volumes/abraco-quentinho/_data\n  ```\n - Adicionar os arquivos nos volumes pelo nó `leader`\n ```bash\n $ git clone https://github.com/SamuelNunesDev/SamuelNunesDev.git \u0026\u0026 mv SamuelNunesDev/* /var/lib/docker/volumes/apache/_data\n $ git clone https://github.com/SamuelNunesDev/abraco-quentinho.git \u0026\u0026 mv abraco-quentinho/* /var/lib/docker/volumes/abraco-quentinho/_data\n ```\n\n## Créditos\n- [Samuel Nunes](https://github.com/SamuelNunesDev)\n## Licença\n - MIT License (MIT). Por favor olhe [LICENSE](LICENSE.md) para mais informações.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuelnunesdev%2Fdocker-portifolio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamuelnunesdev%2Fdocker-portifolio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuelnunesdev%2Fdocker-portifolio/lists"}