Skip to content

Guia Docker

Fabíola Fleury edited this page Oct 3, 2018 · 7 revisions

Guia de Uso de Docker do ejplatform

Estrutura EJ Docker:

  • ej-server 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.

Ambiente Local

Subir ambiente iniciando todos os serviços

O ambiente de desenvolvimento é o padrão da aplicação EJ, então para iniciar os serviços de desenvolvimento basta entrar na pasta docker e executar:

sudo docker-compose up

Isso executará o docker-compose.yml da aplicação que utiliza a imagem Dockerfile e é a responsável pelo ambiente de desenvolvimento.

Para executar um ambiente de produção temos um docker-compose específico para isso que utiliza o Dockerfile.deploy.

# Preencha o arquivo ./env/deploy.env
sudo docker-compose -f docker-compose.production.yml

Importante lembrar que as variáveis de ambiente utilizadas pelos serviços de produção estão no deploy.env, sendo necessário preenche-las antes de executar o docker-compose. Estas variáveis também não devem ser publicadas no repositório, apenas preenchidas no ambiente de produção onde serão utilizadas antes de subir o ambiente docker.

Limpar os bancos de dados das aplicações

Caso deseje apagar os dados do ejplatform do banco de dados será necessário apagar os volumes do container, primeiro parando os containeres, depois eliminando os volumes não utilizados mais.

sudo docker-compose down
sudo docker volume prune

*** Atenção: Isso irá apagar todos os bancos de dados que estejam parados em seu ambiente docker, caso deseje apagar apenas os volumes do EJ, utilize "sudo docker volume rm ".

Inicializar o banco de dados com dados falsos

# Os containeres devem estar rodando
sudo docker-compose up
# Abra outro terminal ou utilize a flag -d após o comando up

# Então execute a tarefa do invoke no container web
sudo docker-compose exec web inv db-fake

Trocar para o Tema CPA

O EJ atualmente tem dois temas, o default e o CPA. Para trocar é necessário que o sistema compile os arquivos scss do novo tema e substitua os css anteriores. Para isto basta indicar qual o tema desejado no comando:

# Os containeres devem estar rodando
sudo docker-compose up
# Abra outro terminal ou utilize a flag -d após o comando up 

# Com o projeto rodando podemos recompilar os scss
sudo docker-compose exec web inv sass -t cpa
# Ou
sudo docker-compose exec web inv sass -t default

Docker 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!

    # Parar todos os containeres rodando:
    sudo docker stop `sudo docker ps -a -q`
    # Remover todos os containeres parados:
    sudo docker rm `sudo docker ps -a -q`
    # Remover todas as imagens _dangling_:
    sudo docker rmi `sudo docker images -a -q -f "dangling=true"`
    # Remover todas as imagens docker:
    sudo docker rmi -f `sudo docker images -a -q`
    # Remover todas as redes docker não mais utilizadas
    sudo docker network prune
    # Remover todos os volumes docker não utilizados
    sudo docker volume prune

Através de Investigação

Caso não possa fazer o Full clean up, pode procurar e eliminar apenas as informações do EJ de seu sistema docker a cada passo.

    #Listar todos os containeres    
    sudo docker ps  

    # Procure e pare todos os containeres ejplatform
    sudo docker stop <CONTAINER ID>  

    # Remova os containeres ejplatform
    sudo docker rm <CONTAINER ID>
    
    # Liste todas as imagens
    sudo docker images
    
    # Remova todas as imagens ejplatform
    sudo docker rmi <IMAGE ID>

    # Liste todas as networks
    sudo docker network ls

    # Remova as networks ejplatform
    sudo docker network rm <NETWORK ID>

    # Liste os volumes existentes
    sudo docker volume ls

    # Remova os volumes ejplatform
    sudo docker volume rm <VOLUME NAME>