mirror of https://github.com/interlegis/sapl.git
30 changed files with 343 additions and 85 deletions
@ -1,4 +1,18 @@ |
|||
media |
|||
collected_static |
|||
*.log |
|||
*.swp |
|||
*~ |
|||
whoosh_index/ |
|||
whoosh/ |
|||
media/ |
|||
collected_static/ |
|||
bower |
|||
bower_components |
|||
postgres-data/ |
|||
data/ |
|||
solr-*/ |
|||
.cache |
|||
.git |
|||
whoosh |
|||
.github |
|||
.idea |
|||
.project |
|||
.env |
|||
@ -1,25 +1,39 @@ |
|||
language: python |
|||
|
|||
python: |
|||
- 3.5 |
|||
sudo: required |
|||
|
|||
services: |
|||
- postgresql |
|||
- docker |
|||
|
|||
install: |
|||
- pip install -r requirements/test-requirements.txt |
|||
env: |
|||
global: |
|||
- DOCKER_COMPOSE_VERSION=1.24.1 |
|||
|
|||
before_script: |
|||
- cp sapl/.env_test sapl/.env |
|||
- psql -c "CREATE USER sapl WITH PASSWORD 'sapl'" -U postgres; |
|||
- psql -c "CREATE DATABASE sapl OWNER sapl;" -U postgres |
|||
- ./scripts/django/check_migrations.sh |
|||
before_install: |
|||
# Install latest versions of docker and docker-compose |
|||
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - |
|||
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" |
|||
- sudo apt-get update |
|||
- sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce |
|||
- sudo rm /usr/local/bin/docker-compose |
|||
- curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose |
|||
- chmod +x docker-compose |
|||
- sudo mv docker-compose /usr/local/bin |
|||
- docker --version |
|||
- docker-compose --version |
|||
|
|||
install: |
|||
- sudo service postgresql stop || true |
|||
|
|||
script: |
|||
- ./manage.py migrate |
|||
- py.test --create-db |
|||
# - ./scripts/django/test_and_check_qa.sh |
|||
- cd $TRAVIS_BUILD_DIR/docker |
|||
# Build master images and run the webserver (tests end to end) |
|||
#- docker-compose -f docker-compose.test.yml build |
|||
#- docker-compose up -d |
|||
#- docker logs sapl |
|||
#- docker-compose rm -f -s -v |
|||
- docker-compose -f docker-compose.test.yml run --workdir="/var/interlegis/sapl" sapl bash -c "cp docker/config/env_test .env && py.test --create-db" |
|||
|
|||
addons: |
|||
hosts: |
|||
- 127.0.0.1 sapldb |
|||
after_script: |
|||
# Cleanup docker containers, images, and volumes |
|||
- docker-compose rm -f -s -v |
|||
- docker system prune -a -f |
|||
- docker volume prune -f |
|||
|
|||
@ -1,33 +0,0 @@ |
|||
sapldb: |
|||
image: postgres:10.5-alpine |
|||
restart: always |
|||
environment: |
|||
POSTGRES_PASSWORD: sapl |
|||
POSTGRES_USER: sapl |
|||
POSTGRES_DB: sapl |
|||
PGDATA : /var/lib/postgresql/data/ |
|||
volumes: |
|||
- sapldb_data:/var/lib/postgresql/data/ |
|||
ports: |
|||
- "5432:5432" |
|||
sapl: |
|||
image: interlegis/sapl:3.1.160-RC1 |
|||
restart: always |
|||
environment: |
|||
ADMIN_PASSWORD: interlegis |
|||
ADMIN_EMAIL: email@dominio.net |
|||
DEBUG: 'False' |
|||
EMAIL_PORT: 587 |
|||
EMAIL_USE_TLS: 'False' |
|||
EMAIL_HOST: smtp.dominio.net |
|||
EMAIL_HOST_USER: usuariosmtp |
|||
EMAIL_SEND_USER: usuariosmtp |
|||
EMAIL_HOST_PASSWORD: senhasmtp |
|||
TZ: America/Sao_Paulo |
|||
volumes: |
|||
- sapl_data:/var/interlegis/sapl/data |
|||
- sapl_media:/var/interlegis/sapl/media |
|||
links: |
|||
- sapldb |
|||
ports: |
|||
- "80:80" |
|||
@ -0,0 +1,62 @@ |
|||
# SAPL BASE IMAGE |
|||
FROM alpine:3.8 AS sapl-base |
|||
|
|||
ENV BUILD_PACKAGES postgresql-dev graphviz-dev graphviz build-base git pkgconfig \ |
|||
python3-dev libxml2-dev jpeg-dev libressl-dev libffi-dev libxslt-dev \ |
|||
nodejs py3-lxml py3-magic postgresql-client poppler-utils antiword \ |
|||
curl jq openssh-client vim bash |
|||
|
|||
RUN apk update --update-cache && apk upgrade && \ |
|||
apk add --update --no-cache $BUILD_PACKAGES |
|||
|
|||
RUN apk --update add fontconfig ttf-dejavu && fc-cache -fv |
|||
|
|||
RUN apk add --no-cache python3 nginx tzdata && \ |
|||
python3 -m ensurepip && \ |
|||
rm -r /usr/lib/python*/ensurepip && \ |
|||
pip3 install --upgrade pip setuptools && \ |
|||
rm -r /root/.cache && \ |
|||
rm -f /etc/nginx/conf.d/* |
|||
|
|||
# TODO: move to sapl production image? |
|||
RUN mkdir -p /var/interlegis/sapl && mkdir /var/log/sapl |
|||
WORKDIR /var/interlegis/sapl/ |
|||
COPY . /var/interlegis/sapl/ |
|||
RUN pip install -r /var/interlegis/sapl/requirements/dev-requirements.txt --upgrade setuptools && \ |
|||
rm -r /root/.cache |
|||
|
|||
|
|||
# SAPL PRODUCTION IMAGE |
|||
FROM sapl-base AS sapl |
|||
|
|||
WORKDIR /var/interlegis/sapl/ |
|||
|
|||
ENV HOME=/var/interlegis/sapl |
|||
|
|||
COPY docker/start.sh $HOME |
|||
COPY docker/check_solr.sh $HOME |
|||
COPY docker/solr_api.py $HOME |
|||
COPY docker/busy-wait.sh $HOME |
|||
COPY docker/create_admin.py $HOME |
|||
COPY docker/genkey.py $HOME |
|||
COPY docker/gunicorn_start.sh $HOME |
|||
|
|||
COPY docker/config/nginx/sapl.conf /etc/nginx/conf.d |
|||
COPY docker/config/nginx/nginx.conf /etc/nginx/nginx.conf |
|||
COPY docker/config/env_dockerfile /var/interlegis/sapl/sapl/.env |
|||
|
|||
RUN python3 manage.py collectstatic --noinput --clear |
|||
|
|||
# Remove .env(fake) e sapl.db da imagem |
|||
RUN rm -rf /var/interlegis/sapl/sapl/.env && \ |
|||
rm -rf /var/interlegis/sapl/sapl.db |
|||
|
|||
RUN chmod +x /var/interlegis/sapl/*.sh && \ |
|||
ln -sf /dev/stdout /var/log/nginx/access.log && \ |
|||
ln -sf /dev/stderr /var/log/nginx/error.log && \ |
|||
touch /var/interlegis/sapl/sapl.log && \ |
|||
ln -s /var/interlegis/sapl/sapl.log /var/log/sapl/sapl.log |
|||
|
|||
VOLUME ["/var/interlegis/sapl/data", "/var/interlegis/sapl/media"] |
|||
|
|||
CMD ["/var/interlegis/sapl/start.sh"] |
|||
@ -1,5 +1,5 @@ |
|||
DATABASE_URL = sqlite:///sapl.db |
|||
SECRET_KEY = 'Dockerfile_Key' |
|||
SECRET_KEY = 'mzp++@i1y-6y8ez_=^sfbr!dzuyry#^@v(3g^2d1k9%f=+mhlb' |
|||
DEBUG = False |
|||
EMAIL_USE_TLS = True |
|||
EMAIL_PORT = 587 |
|||
@ -0,0 +1,9 @@ |
|||
DATABASE_URL = postgresql://sapl:sapl@sapldb:5432/sapl |
|||
SECRET_KEY=test++@i1y-6y8ez_=^sfbr!dzuyry#^@v(3g^2d1k9%f=+mhlb |
|||
DEBUG = True |
|||
EMAIL_USE_TLS = True |
|||
EMAIL_PORT = 587 |
|||
EMAIL_HOST = '' |
|||
EMAIL_HOST_USER = '' |
|||
EMAIL_SEND_USER = '' |
|||
EMAIL_HOST_PASSWORD = '' |
|||
@ -0,0 +1,91 @@ |
|||
## |
|||
## |
|||
## ATENÇÃO: A ATUALIZAÇÃO DESTE ARQUIVO EM AMBIENTES DE PRODUÇÃO PODE CAUSAR PERDA DE DADOS |
|||
## |
|||
## Esta atualização da versão e formato do arquivo docker-compose.yml pode POTENCIALMENTE causar |
|||
## a perda de dados. Portanto, aconselha-se a fazer o BACKUP da base de dados do PostgreSQL e |
|||
## da pasta 'media', assim como outros arquivos que julgar necessários, mas não expresso neste |
|||
## disclaimer por PRECAUÇÃO. |
|||
## |
|||
## Adicionalmente, temos um novo container (saplsolr) que possui seus volumes que devem ser |
|||
## mapeados para um diretório no host da máquina. |
|||
## |
|||
## |
|||
version: "3.5" |
|||
services: |
|||
sapldb: |
|||
image: postgres:10.5-alpine |
|||
container_name: postgres |
|||
restart: always |
|||
environment: |
|||
POSTGRES_PASSWORD: sapl |
|||
POSTGRES_USER: sapl |
|||
POSTGRES_DB: sapl |
|||
PGDATA : /var/lib/postgresql/data/ |
|||
volumes: |
|||
- sapldb_data:/var/lib/postgresql/data/ |
|||
ports: |
|||
- "5433:5432" |
|||
networks: |
|||
- sapl-net |
|||
|
|||
saplsolr: |
|||
image: solr:7.4-alpine |
|||
container_name: solr |
|||
restart: always |
|||
command: bin/solr start -c -f |
|||
volumes: |
|||
- solr_data:/opt/solr/server/solr |
|||
- solr_configsets:/opt/solr/server/solr/configsets |
|||
ports: |
|||
- "8983:8983" |
|||
networks: |
|||
- sapl-net |
|||
|
|||
sapl: |
|||
#image: interlegis/sapl:3.1.159 |
|||
build: |
|||
context: ../ |
|||
dockerfile: ./docker/Dockerfile |
|||
# target: sapl |
|||
container_name: sapl |
|||
labels: |
|||
NAME: "sapl" |
|||
restart: always |
|||
environment: |
|||
ADMIN_PASSWORD: interlegis |
|||
ADMIN_EMAIL: email@dominio.net |
|||
DEBUG: 'False' |
|||
EMAIL_PORT: 587 |
|||
EMAIL_USE_TLS: 'False' |
|||
EMAIL_HOST: smtp.dominio.net |
|||
EMAIL_HOST_USER: usuariosmtp |
|||
EMAIL_SEND_USER: usuariosmtp |
|||
EMAIL_HOST_PASSWORD: senhasmtp |
|||
USE_SOLR: 'True' |
|||
SOLR_COLLECTION: sapl |
|||
SOLR_URL: http://saplsolr:8983 |
|||
TZ: America/Sao_Paulo |
|||
volumes: |
|||
- sapl_data:/var/interlegis/sapl/data |
|||
- sapl_media:/var/interlegis/sapl/media |
|||
links: |
|||
- sapldb |
|||
- saplsolr |
|||
depends_on: |
|||
- sapldb |
|||
- saplsolr |
|||
networks: |
|||
- sapl-net |
|||
ports: |
|||
- "80:80" |
|||
volumes: |
|||
sapl_data: |
|||
sapl_media: |
|||
sapldb_data: |
|||
solr_data: |
|||
solr_configsets: |
|||
|
|||
networks: |
|||
sapl-net: |
|||
driver: bridge |
|||
@ -0,0 +1,17 @@ |
|||
#!/bin/bash |
|||
|
|||
### |
|||
### NÃO ESTÁ BACKUP E RESTAURANDO CORRETAMENTE O BANCO!!!! |
|||
### |
|||
|
|||
|
|||
BACKUP_DIR=sapl-backup-`date -u +%Y-%m-%d-%H-%M` |
|||
mkdir -p ./$BACKUP_DIR |
|||
|
|||
# BACKUP DO BANCO DE DADOS |
|||
sudo docker exec -it postgres bash -c 'pg_dump -U sapl -d sapl -Fc -v > /tmp/database.backup' |
|||
sudo docker cp postgres:/tmp/database.backup ./$BACKUP_DIR |
|||
|
|||
# BACKUP DA PASTA MEDIA |
|||
sudo docker exec -it sapl bash -c 'tar -cvzf media.tar.gz media' |
|||
sudo docker cp sapl:/var/interlegis/sapl/media.tar.gz ./$BACKUP_DIR |
|||
@ -0,0 +1,26 @@ |
|||
#!/bin/bash |
|||
|
|||
|
|||
### |
|||
### NÃO ESTÁ RESTAURANDO CORRETAMENTE O BANCO!!!! |
|||
### |
|||
|
|||
BACKUP_DIR=$1 |
|||
if [ -z $BACKUP_DIR ]; then |
|||
echo "Diretório de backup não informado!" |
|||
echo "uso: $./restore-sapl.sh <backup directory>" |
|||
exit 1 |
|||
fi |
|||
|
|||
# RESTORE DO BANCO DE DADOS |
|||
sudo docker cp ./$BACKUP_DIR/database.backup postgres:/tmp/ |
|||
sudo docker exec -it postgres bash -c 'ls -lah /tmp/database.backup' |
|||
|
|||
# --clean --data-only --disable-trigger ???? |
|||
sudo docker exec -it postgres bash -c 'pg_restore --disable-triggers --data-only -Fc -v -U sapl -d sapl /tmp/database.backup' |
|||
|
|||
# RESTORE DA PASTA MEDIA |
|||
sudo docker cp ./$BACKUP_DIR/media.tar.gz sapl:/var/interlegis/sapl |
|||
sudo docker exec -it sapl bash -c 'ls -lah /var/interlegis/sapl/media.tar.gz' |
|||
#sudo docker exec -it sapl bash -c 'cd /var/interlegis/sapl && tar -zxvf media.tar.gz .' |
|||
|
|||
@ -0,0 +1,20 @@ |
|||
|
|||
#!/bin/sh |
|||
# wait until MySQL is really available |
|||
maxcounter=${MAX_DB_CONN_ATTEMPTS:-10} |
|||
echo "Trying to connect to PostgreSQL, max attempts="$maxcounter |
|||
|
|||
counter=1 |
|||
while ! mysql --host="$DATABASE_URL" --protocol TCP -u"$POSTGRES_USER" -p"$POSTGRES_PASSWORD" -e "show databases;" > /dev/null 2>&1; do |
|||
sleep 1 |
|||
counter=`expr $counter + 1` |
|||
if [ $counter -gt $maxcounter ]; then |
|||
>&2 echo "We have been waiting for PostgreSQL too long already; failing." |
|||
exit 1 |
|||
fi; |
|||
done |
|||
echo "-=------------------------------------------------------" |
|||
echo "-=------------------------------------------------------" |
|||
echo "Connected to PostgreSQL!" |
|||
echo "-=------------------------------------------------------" |
|||
echo "-=------------------------------------------------------" |
|||
Loading…
Reference in new issue