initial setup of dev/prod envs

This commit is contained in:
Daniel afx 2022-02-03 23:46:54 +02:00
commit 3a07c4ca3e
4 changed files with 64 additions and 0 deletions

14
.env.dev-sample Normal file
View file

@ -0,0 +1,14 @@
FLASK_ENV=development
FLASK_APP=forest/__init__.py
APP_FOLDER=/usr/src/app
SQL_HOST=db
SQL_PORT=5432
DATABASE=postgres
POSTGRES_USER=forest
POSTGRES_PASSWORD=forest123
POSTGRES_DB=forest_dev
DATABASE_URL=postgresql://forest:forest123@db:5432/forest_dev

14
.env.prod-sample Normal file
View file

@ -0,0 +1,14 @@
FLASK_ENV=production
FLASK_APP=project/__init__.py
APP_FOLDER=/home/app/web
SQL_HOST=db
SQL_PORT=5432
DATABASE=postgres
POSTGRES_USER=forest
POSTGRES_PASSWORD=forest123
POSTGRES_DB=forest_prod
DATABASE_URL=postgresql://forest:forest123@db:5432/forest_prod

5
.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
*.pyc
__pycache
.DS_Store
.env.dev
.env.prod

31
README.md Normal file
View file

@ -0,0 +1,31 @@
### Development
Uses the default Flask development server.
1. Rename *.env.dev-sample* to *.env.dev*.
1. Update the environment variables in the *docker-compose.yml* and *.env.dev* files.
- (M1 chip only) Remove `-slim-buster` from the Python dependency in `services/web/Dockerfile` to suppress an issue with installing psycopg2
1. Build the images and run the containers:
```sh
$ docker-compose up -d --build
```
Test it out at [http://localhost:5000](http://localhost:5000). The "web" folder is mounted into the container and your code changes apply automatically.
### Production
Uses gunicorn + nginx.
1. Rename *.env.prod-sample* to *.env.prod* and *.env.prod.db-sample* to *.env.prod.db*. Update the environment variables.
1. Build the images and run the containers:
```sh
$ docker-compose -f docker-compose.prod.yml up -d --build
```
Test it out at [http://localhost:1337](http://localhost:1337). No mounted folders. To apply changes, the image must be re-built.
### More info:
Check out the [post](https://testdriven.io/blog/dockerizing-flask-with-postgres-gunicorn-and-nginx).