Base project with basic DRF + React app, using containers with Docker and Docker Compose.
Install Docker:
https://docs.docker.com/install/
After install Docker, proceed to install Docker Compose:
https://docs.docker.com/compose/install/
Create a file inside backend.hci called local_settings.py and paste the code from local_settings.example.py
(if you don't have a sentry url/id, comment this code in your local_settings.py after paste)
Create a file in the root of the project (same level as README.md) called .env, paste the code from .env.example and fill it with your credentials
Generate SSL certificates to enable HTTPS:
cd ssl./self_signed
Build the containers:
./build_backend./build_frontend --target=devfor local development./build_frontendfor production or staging
Start all containers:
-
docker-compose -f docker-compose-dev.yml up -
Or to run them in background:
docker-compose -f docker-compose-dev.yml up -d
Run migrations:
./execute backend manage migrate
Go to your favorite browser (or not), and enter localhost on the url bar.
Install frontend dependencies:
./execute frontend install
Or a particular dependency:
./execute frontend install <dependency_name>
Stop all containers:
docker-compose -f docker-compose-dev.yml down
Restart all containers:
docker-compose -f docker-compose-dev.yml restart
Apply migrations to the DB:
./execute backend manage migrate
Create django migrations:
./execute backend manage makemigrations
Create a super-user:
./execute backend manage createsuperuser
Collect static files:
./execute backend manage collectstatic
Install backend dependencies:
./execute backend pipenv install <dependency_name># Not fully functional yet- Outside the container (in the host backend root folder):
pipenv shellpipenv install <dependency_name>
- Then you have to build the backend again with
./build_backend
To deploy you need to have fabric (2.x) installed in your system (you can install it with pip install fabric, this should install both versions, 1.x and 2.x) and invocations, or the virtualenv activated (pipenv shell inside the root project folder).
On the project root folder:
fab -r ./fabfiles/ deploy --branch=branch-name --host=server-ip --usr=server-username
Where:
deployis the function to runbranchis the branch you want to deploy (for production this should always be master, and is default to that, so this parameter can be ommited)hostis the ip or domeain name of the host you want to deploy to.usris the server user name
To use a different ssh key or one stored in a folder different from the default one:
-i, --identityadd one of those parameters when calling fab, follow by the ssh path.