Projeto para a vaga de Fullstack jr
- Deploy
- CI
- Docker
- Testes para a api
Primeiro precisamos setar nossas variaveis de ambiente
cat .env.example > .env
Alguns passos importantes para execução das migrations no container.
docker-compose up web db && docker-compose rm -fvs
Isso vai levantar o serviço da api e do banco, ainda não podemos subir todos os serviços pois precisamos executar as migrations. Com o container api de pé:
# execute em outro terminal
docker exec api alembic upgrade head
# output
INFO [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO [alembic.runtime.migration] Will assume transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> 0871b66f06be, create categories table
INFO [alembic.runtime.migration] Running upgrade 0871b66f06be -> 8d907b43a43b, create products table
Após, derrube o serviço da api:
docker stop api
Agora precisamos modificar o docker-compose.yml e modificar o seguinte trecho que está comentado:
api:
...
command: "uvicorn src.main:app --host: 0.0.0.0 --reload"
isso irá atualizar o comando que será executado quando o container for executado.
Feito isso podemos subir o frontend e a api novamente:
docker-compose up web api && docker-compose rm -fvs
service | Tecnology | URL |
---|---|---|
web | Angular e Nginx | clique aqui |
api | Fastapi | clique aqui |
db | Postgres | executando na porta 5432 |
Usando essa abordagem é preciso de um banco de dados configurado, a api está esperando um banco de dados Postgres mas pode ser usado qqr um com alguns ajustes.
Vamos começar subindo a api.
cd backend/
python -m venv .env/ # ou qqr outro comando para criar um ambiente virtual, não é obrigatório
source env/bin/activate # ativando o ambiente, só execute se fzr o passo anterior
Agora vamos instalar as dependencias:
pip install -r requirements.txt
feito isso precisamos executar as migrations no banco, não esqueça de copiar o .env
com as variaveis de ambiente para backend/
, isso é importante para a ORM conseguir encontrar o banco de dados.
alembic upgrade head
uvicorn src.main:app --reload
Subindo o frontend.
Acesse a pasta frontend
cd frontend
npm install
E o comando para executar é:
npm run start
service | Tecnology | URL |
---|---|---|
web | Angular | clique aqui |
api | Fastapi | clique aqui |
Se não conseguir ou não desejar subir os serviços, eles estão disponíveis:
service | Tecnology | URL |
---|---|---|
web | Angular | clique aqui |
api | Fastapi | clique aqui |