bullish/README.md
Ameya Shenoy d1e5d96fcf
fix: move secrets to a k8s secret
Signed-off-by: Ameya Shenoy <shenoy.ameya@gmail.com>
2021-02-13 09:37:06 +05:30

140 lines
3.5 KiB
Markdown

<div align="center">
<a href="https://bullish.codingcoffee.me" target="_blank" rel="noopener noreferrer">
<img src="./frontend/src/assets/logo.png" width="250">
<h1>
Bullish
</h1>
<h4>A simple webapp to explore Bhav Copy Equity data</h4>
</a>
</div>
[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
Backend:
[![Docker Pulls - Backend](https://img.shields.io/docker/pulls/codingcoffee/bullish-backend)](https://hub.docker.com/r/codingcoffee/bullish-backend)
[![Docker Image Size Backend (tag)](https://img.shields.io/docker/image-size/codingcoffee/bullish-backend?sort=date)](https://hub.docker.com/r/codingcoffee/bullish-backend/tags?name=latest)
Frontend
[![Docker Pulls - Frontend](https://img.shields.io/docker/pulls/codingcoffee/bullish-frontend)](https://hub.docker.com/r/codingcoffee/bullish-frontend)
[![Docker Image Size Frontend (tag)](https://img.shields.io/docker/image-size/codingcoffee/bullish-frontend?sort=date)](https://hub.docker.com/r/codingcoffee/bullish-frontend/tags?name=latest)
## Usage
- Local setup is supported via Docker Compose
![Development Architecture](.assets/images/bullish-dev-2021-02-12.png "Development Architecture")
```sh
docker-compose up -d
```
### Build
- Build images for dev
```sh
docker-compose build
```
- Build images for prod
```sh
./prod-build.sh
```
### Logging
To get the logs of all containers
```sh
docker logs -f
```
To get the logs of a particular container
```sh
docker logs -f container-name
```
Here `container-name` can be either of `backend`, `frontend`, `redis`,
`postgresql`, `rqworker` or `rqscheduler`.
### Debugging
- To goto Django's shell to debug you may use
```sh
docker-compose exec backend python manage.py shell
```
- To create migrations
```sh
docker-compose exec backend python manage.py makemigrations
```
- To run migrate
```sh
docker-compose exec backend python manage.py migrate
```
Similarly all django commands can be run this way.
## Deploy
The recommended way for deploy is on Kubernetes. You can find the related files
![Production Architecture](.assets/images/bullish-prod-2021-02-12.png "Production Architecture")
in `k8s` directory.
Before deploy create a `secret.yaml` file in `k8s/app`, with base 64 encoded
secrets. A sample file named `sample-secret.yaml` has been committed listing all
the required variables. Change the secrets preset in the file before using it.
- One time deploy
```sh
# Deploy ingress
kubectl apply -f k8s/ingress/ingress-https.yaml
# Deploy secrets
kubectl apply -f k8s/app/secret.yaml
# Deploy Postgres and Redis DB
kubectl apply -f k8s/app/redis.yaml
kubectl apply -f k8s/app/postgres.yaml
# Deploy Backend
kubectl apply -f k8s/app/backend.yaml
kubectl apply -f k8s/app/rqworker.yaml
kubectl apply -f k8s/app/rqscheduler.yaml
# Deploy Frontend
kubectl apply -f k8s/app/frontend.yaml
```
- Subsequent deploys can be done by rolloing out a restart since all pods have a `imagePullPolicy` set to `Always`
```sh
# Push containers to Docker Hub and Deploy to K8s
./prod-deploy.sh
```
## Contribution
Have better suggestions to optimize the image? Found some typos? Go ahead and send in a Pull Request! Contributions of any kind welcome!
## License
The code in this repository has been released under the [GNU Affero General Public License v3](https://www.gnu.org/licenses/agpl-3.0.en.html)
## Attributions
- [Bullish icon](./.assets/images/bullish.png) made by [Freepik](https://www.freepik.com) from [Flaticon](https://www.flaticon.com)