From 3a07c4ca3e55a9983dd7fa1cb6b475d7b6026780 Mon Sep 17 00:00:00 2001 From: Daniel afx Date: Thu, 3 Feb 2022 23:46:54 +0200 Subject: [PATCH] initial setup of dev/prod envs --- .env.dev-sample | 14 ++++++++++++++ .env.prod-sample | 14 ++++++++++++++ .gitignore | 5 +++++ README.md | 31 +++++++++++++++++++++++++++++++ 4 files changed, 64 insertions(+) create mode 100644 .env.dev-sample create mode 100644 .env.prod-sample create mode 100644 .gitignore create mode 100644 README.md diff --git a/.env.dev-sample b/.env.dev-sample new file mode 100644 index 0000000..bb3355a --- /dev/null +++ b/.env.dev-sample @@ -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 + diff --git a/.env.prod-sample b/.env.prod-sample new file mode 100644 index 0000000..a7a6229 --- /dev/null +++ b/.env.prod-sample @@ -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 + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ddc5873 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.pyc +__pycache +.DS_Store +.env.dev +.env.prod diff --git a/README.md b/README.md new file mode 100644 index 0000000..8371291 --- /dev/null +++ b/README.md @@ -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). +