Commit a719fad6 authored by Bruno Meyer's avatar Bruno Meyer

adega#121 Move bash commands to makefile & create folder with all docker relative files

parent eaa19b39
......@@ -21,9 +21,44 @@ E podem ser clonado com o comando
```bash
$ git clone git@gitlab.c3sl.ufpr.br:adega/adega.git
```
## Instalação e dependências com docker
Para executar o projeto com o docker, siga os seguintes passos:
```bash
$ git clone git@gitlab.c3sl.ufpr.br:adega/adega.git # Comando já executado
$ cd adega/
$ sudo make docker-install # Instala o docker.io e docker-compose
$ sudo make docker-up # Executa os containers postgres e webserver
```
## Desenvolvimento com o docker
Enquanto o `sudo make docker-up` estiver sendo executado, as alterações feitas nos arquivos do projeto será compartilhado com os arquivos do container docker. Ou seja, é possível alterar qualquer arquivo do projeto e haverá resultados em tempo real.
Assim como é possível realizar qualquer comando como seria feito no com o manage.py, também é possível por meio do comando `sudo make docker-manage`. Por exemplo:
```bash
$ sudo make docker-manage makemigrations uploads
$ sudo make docker-manage migrate
$ sudo make docker-manage createsuperuser
```
Para realizar esses comandos, certifique-se que o comando `make docker-up`está em execução (recomenda-se deixar uma aba no terminal para isso).
## Recomendações para o docker
É recomendado que o usuário configure o docker para que o mesmo possa ser executado sem necessidades de privilégios de superusuário, assim não haverá necessidade do uso de `sudo`. Caso contrário, os comandos realizados com `sudo make` poderão criar arquivos cujo proprietário é o usuário `root`. Caso a recomendação não for seguida, o seguinte comando irá alterar o proprietário dos arquivos para o usuário atual:
```bash
$ sudo make docker-fix
```
## Remover os containers + banco de dados
Para apagar os containers e o banco de dados, execute o seguinte comando:
```bash
$ sudo docker-remove-all
```
*Observação*: Esse comando **não** irá deletar qualquer arquivo do projeto / diretório local, apenas os containers.
## Instalação e dependências
## Instalação e dependências manuais (não recomendado)
```bash
......
......@@ -10,7 +10,7 @@ WORKDIR /adega
# Not necessary (only do the build slow)
# ADD . /adega
ADD requirements.txt /adega/requirements.txt
ADD ./requirements.txt /adega/requirements.txt
RUN pip3 install -r requirements.txt
......
......@@ -7,7 +7,9 @@ services:
- POSTGRES_PASSWORD=adega
- POSTGRES_DB=adega
web:
build: .
build:
context: .
dockerfile: ./docker_scripts/Dockerfile
command: bash "./docker_scripts/on_docker_init.sh"
volumes:
- .:/adega
......
bash ./docker_scripts/wait-for-postgres.sh
# This commands will be run inside of the container web
# If ANY of this commands fails (return != 0) the container will be down
bash ./docker_scripts/wait_for_postgres.sh
python ./src/manage.py migrate
python ./src/manage.py runserver 0.0.0.0:8000
#!/bin/bash
# ---------------- flags -------------------
verbose=0
# ---------- functions ------------------
configure() {
#~ postgres psql < postgres/create.sql
PGPASSWORD=adega psql -h adega_db_1 -U adega < postgres/create.sql
python3 src/manage.py makemigrations degree
python3 src/manage.py makemigrations uploads
python3 src/manage.py makemigrations educator
python3 src/manage.py makemigrations adega
python3 src/manage.py migrate
}
function install() {
PACKAGES="git docker docker-compose"
declare -A osInfo;
osInfo[/etc/arch-release]="pacman -S --noconfirm "
osInfo[/etc/debian_version]="apt-get install -y"
for f in ${!osInfo[@]}; do
#verifica se o arquivo $f existe
if [[ -f $f ]]; then
DISTRO=${osInfo[$f]}
fi
done
sudo $DISTRO $PACKAGES
if [ ! -d "base_dados" ]; then
git clone git@gitlab.c3sl.ufpr.br:adega/base_dados.git
fi
#docker build --tag adega .
docker-compose up
}
function usase() {
echo -ne "
Options:
-h, --help imprime ajuda
-v, --verbose ativa o verbose
-i, --install instala todas as depedências
-c, --configure realiza a configuração
"
}
# -------------- main ------------------
if [ $# -gt 0 ]; then
for argument in $*; do
case $argument in
-h |--help) usase ;;
-i |--install) install ;;
-c |--configure) configure ;;
-v |--verbose) verbose=1 ;;
-d |--deploy) deploy ;;
esac
shift
done
fi
......@@ -36,13 +36,35 @@ install-user:
pipenv install
# TODO: Create the files in docker with $USER owner
docker-fix:
chown -R $USER:$USER *
docker-up:
docker-compose --project-directory . -f docker_scripts/docker-compose.yml -p adega up
docker-remove-all:
docker rm adega_web_1 adega_db_1
docker rmi adega_web
# Maybe this will not works in all OS systems
docker-install:
apt-get install docker
apt-get install docker-compose
# The follows commands permit to use manage.py with make. Examples:
# make docker-manage migrate
# make docker-manage makemigrations uploads
%:
@:
args = `arg="$(filter-out $@,$(MAKECMDGOALS))" && echo $${arg:-${1}}`
manage:
docker-manage:
@echo $(call args,"")
sudo docker exec -it adega_web_1 python3 ./src/manage.py $(call args,"")
docker exec -it adega_web_1 python3 ./src/manage.py $(call args,"")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment