Template designed to quickly build full stack apps.
Utilizes Github Actions and Ansible to build Docker images to quickly deploy onto an AWS EC2 Debian instance.
-
Containerization: Docker/Docker Compose
-
Frontend: React/Next.js
-
Backend: FastAPI
-
Frameworks/Libraries: PDM, TailwindCSS
-
Install Ansible
-
Create a Dockerhub account/repo and fill out the Github repo environmental variables:
- DOCKERHUB_TOKEN
- DOCKERHUB_USERNAME
- DOCKERHUB_REPO
-
Complete the
config.yaml
and theinventory.yaml
in theansible
directorygithub_repo
: Github repo clone addressdeploy_path
: Path where to clone the repo to on the serverdeploy_command
:Make
command to run to deploy on the server
-
Add your domain in HOSTNAME_PROD in the
Makefile
Uses make
to quickly dispatch docker-compose
commands.
-
deps
: rebuilds the frontend to deploy statically using the api -
build
: builds the container usingdocker-compose build
-
up-prd
: ups the container usingdocker-compose -f docker-compose.yml up
-
up-dev
: ups the container usingdocker-compose -f docker-compose.yml -f docker-compose.dev.yml up
which will deploy with local volumes.
Ex: make deps build up-dev
Easy deployment using make setup deploy
after completing the required config files.
-
setup
: Install dependencies and clone repo onto server -
deploy
: Deploy on server
To use a SSL certificate, uncomment the volumes under the traefik
service. Add your own certificates for use in Traefik.
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./dynamic_conf.yaml:/etc/traefik/dynamic_conf.yaml"
- "/etc/letsencrypt/live/domain/fullchain.pem:/etc/certs/ssl-cert.pem"
- "/etc/letsencrypt/live/domain/privkey.pem:/etc/certs/ssl-cert.key"