From e9adcccfe652e6845fef6ffc8f44553685ec57bc Mon Sep 17 00:00:00 2001 From: ricardocanela Date: Mon, 27 May 2019 11:13:08 -0300 Subject: [PATCH] Inserindo desenvolvimento com docker na documentacao de instalacao --- docker_devel/Dockerfile => Dockerfile.dev | 21 +---- docker-compose.dev.yml | 8 +- docker_devel/readme.txt | 3 - docs/instalacao31.rst | 17 ++++ start_devel.sh | 107 ++++++++++++++++++++++ 5 files changed, 131 insertions(+), 25 deletions(-) rename docker_devel/Dockerfile => Dockerfile.dev (58%) mode change 100644 => 100755 delete mode 100644 docker_devel/readme.txt create mode 100644 start_devel.sh diff --git a/docker_devel/Dockerfile b/Dockerfile.dev old mode 100644 new mode 100755 similarity index 58% rename from docker_devel/Dockerfile rename to Dockerfile.dev index 1ecfef599..31f90725e --- a/docker_devel/Dockerfile +++ b/Dockerfile.dev @@ -26,24 +26,9 @@ WORKDIR /var/interlegis/sapl/ RUN pip install -r /var/interlegis/sapl/requirements/dev-requirements.txt --upgrade setuptools && \ rm -r /root/.cache -COPY docker_devel/.env /var/interlegis/sapl/sapl/.env +#RUN python3 manage.py collectstatic --noinput --clear -RUN python3 manage.py collectstatic --noinput --clear +RUN chmod +x start_devel.sh -# Remove .env(fake) e sapl.db da imagem -RUN rm -rf /var/interlegis/sapl/sapl/.env && \ - rm -rf /var/interlegis/sapl/sapl.db +CMD ["/var/interlegis/sapl/start_devel.sh"] -RUN chmod +x /var/interlegis/sapl/start.sh && \ - ln -sf /dev/stdout /var/log/nginx/access.log && \ - ln -sf /dev/stderr /var/log/nginx/error.log && \ - mkdir /var/log/sapl/ && touch /var/interlegis/sapl/sapl.log && \ - ln -s /var/interlegis/sapl/sapl.log /var/log/sapl/sapl.log - -VOLUME [ "/var/interlegis/sapl"] - -EXPOSE 8000 - -CMD python3 manage.py runserver 0.0.0.0:8000 - -#CMD ["/var/interlegis/sapl/start.sh"] diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index d6fff0642..a6bc8b356 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -18,12 +18,12 @@ saplredis: sapl: #image: interlegis/sapl:master build: . - dockerfile: ./docker_devel/Dockerfile + dockerfile: Dockerfile.dev restart: always environment: ADMIN_PASSWORD: interlegis ADMIN_EMAIL: email@dominio.net - DEBUG: 'False' + DEBUG: 'True' EMAIL_PORT: 587 EMAIL_USE_TLS: 'False' EMAIL_HOST: smtp.dominio.net @@ -35,9 +35,9 @@ sapl: HOST_CHANNEL_LAYERS: saplredis TZ: America/Sao_Paulo volumes: - - .:/var/interlegis/sapl + - ./sapl:/var/interlegis/sapl/sapl links: - sapldb - saplredis ports: - - "8000:8000" + - "80:80" diff --git a/docker_devel/readme.txt b/docker_devel/readme.txt deleted file mode 100644 index 2673f2cf1..000000000 --- a/docker_devel/readme.txt +++ /dev/null @@ -1,3 +0,0 @@ -Para utilizar docker-compose para desenvolvimento: - -docker-compose -f ./docker-compose.dev.yml up --build diff --git a/docs/instalacao31.rst b/docs/instalacao31.rst index 43a1c4de6..afc7f09a7 100644 --- a/docs/instalacao31.rst +++ b/docs/instalacao31.rst @@ -1,6 +1,23 @@ Instalação do Ambiente de Desenvolvimento ========================================= +**Opção desenvolver utilizando docker-composer:** + +* Instale docker e docker-composer + + * `Docker `_ + * `Docker-composer `_ + + +* Rode o docker-compose para desenvolvimento: + +:: + + docker-compose -f ./docker-compose.dev.yml up --build + + +**Opção desenvolver utilizando máquina local** + * Procedimento testado nos seguintes SO's: * `Ubuntu 16.04 64bits `_; diff --git a/start_devel.sh b/start_devel.sh new file mode 100644 index 000000000..07a8a1c38 --- /dev/null +++ b/start_devel.sh @@ -0,0 +1,107 @@ +#!/bin/bash + +create_env() { + echo "[ENV FILE] creating .env file..." + + KEY=`python3 genkey.py` + + FILENAME="/var/interlegis/sapl/sapl/.env" + + if [ -z "${DATABASE_URL:-}" ]; then + DATABASE_URL="postgresql://sapl:sapl@sapldb:5432/sapl" + fi + + touch $FILENAME + + + # explicitly use '>' to erase any previous content + echo "SECRET_KEY="$KEY > $FILENAME + # now only appends + echo "DATABASE_URL = "$DATABASE_URL >> $FILENAME + echo "DEBUG = ""${DEBUG-False}" >> $FILENAME + echo "EMAIL_USE_TLS = ""${USE_TLS-True}" >> $FILENAME + echo "EMAIL_PORT = ""${EMAIL_PORT-587}" >> $FILENAME + echo "EMAIL_HOST = ""${EMAIL_HOST-''}" >> $FILENAME + echo "EMAIL_HOST_USER = ""${EMAIL_HOST_USER-''}" >> $FILENAME + echo "EMAIL_HOST_PASSWORD = ""${EMAIL_HOST_PASSWORD-''}" >> $FILENAME + echo "EMAIL_SEND_USER = ""${EMAIL_HOST_USER-''}" >> $FILENAME + echo "DEFAULT_FROM_EMAIL = ""${EMAIL_HOST_USER-''}" >> $FILENAME + echo "SERVER_EMAIL = ""${EMAIL_HOST_USER-''}" >> $FILENAME + echo "USE_SOLR = ""${USE_SOLR-False}" >> $FILENAME + echo "SOLR_COLLECTION = ""${SOLR_COLLECTION-sapl}" >> $FILENAME + echo "SOLR_URL = ""${SOLR_URL-http://localhost:8983}" >> $FILENAME + echo "USE_CHANNEL_LAYERS = ""${USE_CHANNEL_LAYERS-True}" >> $FILENAME + echo "PORT_CHANNEL_LAYERS = ""${PORT_CHANNEL_LAYERS-6379}" >> $FILENAME + echo "HOST_CHANNEL_LAYERS = ""${HOST_CHANNEL_LAYERS-'saplredis'}" >> $FILENAME + echo "[ENV FILE] done." +} + +create_env +chmod 777 /var/interlegis/sapl/sapl/.env + +/bin/bash busy-wait.sh $DATABASE_URL + +yes yes | python3 manage.py migrate + + +## SOLR +USE_SOLR="${USE_SOLR:=False}" +SOLR_URL="${SOLR_URL:=http://localhost:8983}" +SOLR_COLLECTION="${SOLR_COLLECTION:=sapl}" + +NUM_SHARDS=${NUM_SHARDS:=1} +RF=${RF:=1} +MAX_SHARDS_PER_NODE=${MAX_SHARDS_PER_NODE:=1} + +if [ "${USE_SOLR-False}" == "True" ] || [ "${USE_SOLR-False}" == "true" ]; then + + echo "SOLR configurations" + echo "===================" + echo "URL: $SOLR_URL" + echo "COLLECTION: $SOLR_COLLECTION" + echo "NUM_SHARDS: $NUM_SHARDS" + echo "REPLICATION FACTOR: $RF" + echo "MAX SHARDS PER NODE: $MAX_SHARDS_PER_NODE" + echo "=========================================" + + /bin/bash check_solr.sh $SOLR_URL + + python3 solr_api.py -u $SOLR_URL -c $SOLR_COLLECTION -s $NUM_SHARDS -rf $RF -ms $MAX_SHARDS_PER_NODE & + # python3 manage.py rebuild_index --noinput & +else + echo "Suporte a SOLR não inicializado." +fi + +echo "Criando usuário admin..." + +user_created=$(python3 create_admin.py 2>&1) + +echo $user_created + +cmd=$(echo $user_created | grep 'ADMIN_USER_EXISTS') +user_exists=$? + +cmd=$(echo $user_created | grep 'MISSING_ADMIN_PASSWORD') +lack_pwd=$? + +if [ $user_exists -eq 0 ]; then + echo "[SUPERUSER CREATION] User admin already exists. Not creating" +fi + +if [ $lack_pwd -eq 0 ]; then + echo "[SUPERUSER] Environment variable $ADMIN_PASSWORD for superuser admin was not set. Leaving container" + # return -1 +fi + +echo "-------------------------------------" +echo "| ███████╗ █████╗ ██████╗ ██╗ |" +echo "| ██╔════╝██╔══██╗██╔══██╗██║ |" +echo "| ███████╗███████║██████╔╝██║ |" +echo "| ╚════██║██╔══██║██╔═══╝ ██║ |" +echo "| ███████║██║ ██║██║ ███████╗ |" +echo "| ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝ |" +echo "-------------------------------------" + +python3 manage.py collectstatic --noinput --clear + +python3 manage.py runserver 0.0.0.0:80