mirror of https://github.com/interlegis/sapl.git
30 changed files with 343 additions and 85 deletions
@ -1,4 +1,18 @@ |
|||||
media |
*.log |
||||
collected_static |
*.swp |
||||
|
*~ |
||||
|
whoosh_index/ |
||||
|
whoosh/ |
||||
|
media/ |
||||
|
collected_static/ |
||||
|
bower |
||||
|
bower_components |
||||
|
postgres-data/ |
||||
|
data/ |
||||
|
solr-*/ |
||||
|
.cache |
||||
.git |
.git |
||||
whoosh |
.github |
||||
|
.idea |
||||
|
.project |
||||
|
.env |
||||
@ -1,25 +1,39 @@ |
|||||
language: python |
sudo: required |
||||
|
|
||||
python: |
|
||||
- 3.5 |
|
||||
|
|
||||
services: |
services: |
||||
- postgresql |
- docker |
||||
|
|
||||
install: |
env: |
||||
- pip install -r requirements/test-requirements.txt |
global: |
||||
|
- DOCKER_COMPOSE_VERSION=1.24.1 |
||||
|
|
||||
before_script: |
before_install: |
||||
- cp sapl/.env_test sapl/.env |
# Install latest versions of docker and docker-compose |
||||
- psql -c "CREATE USER sapl WITH PASSWORD 'sapl'" -U postgres; |
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - |
||||
- psql -c "CREATE DATABASE sapl OWNER sapl;" -U postgres |
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" |
||||
- ./scripts/django/check_migrations.sh |
- 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: |
script: |
||||
- ./manage.py migrate |
- cd $TRAVIS_BUILD_DIR/docker |
||||
- py.test --create-db |
# Build master images and run the webserver (tests end to end) |
||||
# - ./scripts/django/test_and_check_qa.sh |
#- 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: |
after_script: |
||||
hosts: |
# Cleanup docker containers, images, and volumes |
||||
- 127.0.0.1 sapldb |
- 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 |
DATABASE_URL = sqlite:///sapl.db |
||||
SECRET_KEY = 'Dockerfile_Key' |
SECRET_KEY = 'mzp++@i1y-6y8ez_=^sfbr!dzuyry#^@v(3g^2d1k9%f=+mhlb' |
||||
DEBUG = False |
DEBUG = False |
||||
EMAIL_USE_TLS = True |
EMAIL_USE_TLS = True |
||||
EMAIL_PORT = 587 |
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