GithubHelp home page GithubHelp logo

samuelnunesdev / docker-portifolio Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 10 KB

Projeto criado para praticar o uso do docker

Home Page: http://portifolio.samuelnunesdev.com/

License: MIT License

Dockerfile 100.00%
cluster docker docker-compose docker-swarm nginx

docker-portifolio's Introduction

Docker Portifólio

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 -> portifolio.samuelnunesdev.com

Conteúdo no ambiente de Produção:

  • 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:
    • O leader com disponibilidade drain, resposável apenas para o controle do swarm e como servidor dos volumes utilizando NFS.
    • Dois nós gerenciadores/trabalhadores que podem receber containers e servem de backup caso o leader fique indisponível.
    • Um nó apenas para trabalho, responsável pelos bancos de dados com volume fixado.
  • Um registry para guardar imagens personalizadas.
  • Um proxy reverso utilizando o nginx para balanceamento de carga.
  • O swarmpit para monitoramento do swarm.
  • Algumas imagens como apache, postgres e o php-apache para servir algumas aplicações que em um futuro próximo serão migradas.
  • Route 53 para gerenciamento de domínios.

Instalação:

  • Adicionar labels em nós que receberão container cujo o volume é fixado
    $ docker node ls
    $ docker node update --label-add gerenciador=2 nome-ou-id-de-um-no-gerenciador-exceto-leader
    $ docker node update --label-add trabalhador=1 nome-ou-id-de-um-no-apenas-trabalhador```
  • Instalando o registry
    $ docker stack deploy -c registry/docker-compose.yml
  • Criando o build do proxy
    $ cd proxy-portifolio && docker build -t localhost:5000/proxy-portifolio:1.0 .
  • Instalando o swarmpit
    $ git clone https://github.com/swarmpit/swarmpit -b master 
    $ docker stack deploy -c swarmpit/docker-compose.yml swarmpit 
  • Instalando os demais projetos (proxy, apache, php, banco de dados e etc)
    $ docker stack deploy -c portifolio/docker-compose.yml portifolio
  • Alterando a disponibilidade do nó leader
    $ docker node update --availability drain nome-ou-id
  • Instalar e configurar o NFS servidor no nó leader
    $ apt-get -y install nfs-server
    $ nano /etc/exports
    • Adicione estas duas linhas no final do arquivo e salve o arquivo:
      /var/lib/docker/volumes/apache/_data *(rw,sync,no_subtree_check)
      /var/lib/docker/volumes/abraco-quentinho/_data *(rw,sync,no_subtree_check)
    • Após adicionar as linhas deve-se exportar os diretórios
      $ exportfs -ar
  • Instalar e configurar o NFS cliente nos demais nós
    $ apt-get -y install nfs-common
    $ mount ip-no-leader:/var/lib/docker/volumes/apache/_data /var/lib/docker/volumes/apache/_data
    $ mount ip-no-leader:/var/lib/docker/volumes/abraco-quentinho/_data /var/lib/docker volumes/abraco-quentinho/_data
  • Adicionar os arquivos nos volumes pelo nó leader
$ git clone https://github.com/SamuelNunesDev/SamuelNunesDev.git && mv SamuelNunesDev/* /var/lib/docker/volumes/apache/_data
$ git clone https://github.com/SamuelNunesDev/abraco-quentinho.git && mv abraco-quentinho/* /var/lib/docker/volumes/abraco-quentinho/_data

Créditos

Licença

  • MIT License (MIT). Por favor olhe LICENSE para mais informações.

docker-portifolio's People

Contributors

samuelnunesdev avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.