Skip to content
Jonathan Henrique Maia de Moraes edited this page Apr 27, 2018 · 15 revisions

Guia de Uso de Docker do ejplatform

Resumo das mudanças

  • O diretório compose foi atualizado e substituido para docker;

  • Todos os .yml de configuração do docker-compose foram atualizados e movidos para seus respectivos contextos no diretório docker;

  • ej-server agora possui a seguinte herança de imagens Docker:

    1. ej-server:base: Possui todas as dependências definidas em requirements/base.txt e todos os scripts definidos em docker/base/script (ex: runserver.sh, gunicorn.sh, test.sh, run_celery.sh, etc) na raíz do docker (/);

      1. ej-server:base-test: Além dos recursos de ej-server:base, possui todas as dependências definidas em requirements/test.txt. Essa imagem é utilizada para executar os testes locais e para o ambiente de desenvolvimento;

      2. ej-server:base-production: Além dos recursos de ej-server:base, possui todas as dependências definidas em requirements/production.txt;

        1. ej-server:develop: Além dos recursos de ej-server:base-production, possui o ambiente de homologação devidamente configurado;

          1. ej-nginx:develop: Copia os arquivos estáticos de ej-server:develop para seu ambiente nginx.
        2. ej-server:latest: Além dos recursos de ej-server:base-production, possui o ambiente de produção devidamente configurado;

          1. ej-nginx:latest: Copia os arquivos estáticos de ej-server:latest para seu ambiente nginx.

Cleanup

Full Cleanup

ALERTA! Isso irá limpar TUDO que tange aos serviços Docker! Faça apenas se tiver CERTEZA de que tudo que possui de Docker ( incluindo de outros sistemas ) é dispensável!

  1. Pare todos os containers:

    sudo docker stop `sudo docker ps -a -q`
  2. Remova todos os containers:

    sudo docker rm `sudo docker ps -a -q`
  3. Remova todas as imagens dangling:

    sudo docker rmi `sudo docker images -a -q -f "dangling=true"`
  4. Remova todas as imagens:

    sudo docker rmi -f `sudo docker images -a -q`
  5. Limpe as redes:

    sudo docker network prune
  6. Limpe os volumes:

    sudo docker volume prune

Através de Investigação

  1. Liste os containers:

    sudo docker ps
  2. Pare todos os containers do ejplatform:

    sudo docker stop <CONTAINER ID>
  3. Remova todos os containers do ejplatform:

    sudo docker rm <CONTAINER ID>
  4. Liste as imagens:

    sudo docker images
  5. Remova todas as imagens do ejplatform:

    sudo docker rmi <IMAGE ID>
  6. Liste as redes:

    sudo docker network ls
  7. Remova todas as redes do ejplatform:

    sudo docker network rm <NETWORK ID>
  8. Liste os volumes:

    sudo docker volume ls
  9. Remova todos os volumes do ejplatform:

    sudo docker volume rm <VOLUME NAME>

Ambiente Local

Subir ambiente sem iniciar serviços django

sudo docker-compose -f docker/local/idle.yml up -d

Subir ambiente iniciando todos os serviços

sudo docker-compose -f docker/local/start.yml up -d

Lidando com Atualizações

Atualizações nos Scripts

  1. Confirme o desejo de modificação com o time de desenvolvimento, visto que as atualizações irão perpetuar em todos os ambientes quando estes forem atualizados;

  2. Garanta que esteja na última versão da branch base:

    git fetch origin
    git checkout base
    git pull origin base
  3. Crie o commit com a mudança no script;

  4. Opte por testar o(s) script(s) atualizando localmente as imagens que este(s) script(s) são utilizados. Exemplo: Alterei o script runserver.sh e ele utilizado no ambiente local, portanto:

    sudo docker-compose -f docker/base/base.build.yml build
    sudo docker-compose -f docker/base/test.build.yml build
    sudo docker-compose -f docker/local/start.yml up
  5. push na branch base com a modificação.

Atualizações no requirements/base.txt

  1. Confirme o desejo de modificação com o time de desenvolvimento, visto que as atualizações irão perpetuar em todos os ambientes quando estes forem atualizados;

  2. Garanta que esteja na última versão da branch base:

    git fetch origin
    git checkout base
    git pull origin base
  3. Crie o commit com a mudança nas dependências;

  4. Verifique a instalação da(s) nova(s) dependência(s):

    sudo docker-compose -f docker/base/base.build.yml build
  5. push na branch base com a modificação.

Atualizações no requirementes/test.txt

  1. Confirme o desejo de modificação com o time de desenvolvimento, visto que as atualizações irão perpetuar em todos os ambientes locais quando estes forem atualizados;

  2. Garanta que esteja na última versão da branch base_test:

    git fetch origin
    
    git checkout base
    git pull origin base
    
    git checkout base_test
    git pull origin base_test
    
    git merge base
  3. Crie o commit com a mudança nas dependências;

  4. Verifique a instalação da(s) nova(s) dependência(s):

    sudo docker-compose -f docker/base/test.build.yml build
  5. push na branch base_test com a modificação.

Atualizações no requirementes/production.txt

  1. Confirme o desejo de modificação com o time de desenvolvimento, visto que as atualizações irão perpetuar em todos os ambientes de produção/homologação quando estes forem atualizados;

  2. Garanta que esteja na última versão da branch base_production e sincronizada com a branch base:

    git fetch origin
    
    git checkout base
    git pull origin base
    
    git checkout base_production
    git pull origin base_production
    
    git merge base
  3. Crie o commit com a mudança nas dependências;

  4. Verifique a instalação da(s) nova(s) dependência(s):

    sudo docker-compose -f docker/base/production.build.yml build
  5. push na branch base_production com a modificação.

Clone this wiki locally