A dynamic web-site to create, purchase, subscribe to and share food recipes.
A downloadable text file with amounts of all the ingredients of purchased
recipes is available on demand.
Python 3 Django PostgreSQL Docker Docker-compose Docker Hub Gunicorn Nginx Github Actions Ubuntu HTML, CSS, JavaScript
After you've started the server (see the instructions below), run the following commands in the system shell:
python manage.py migrate
python manage.py load_fixtures
python manage.py createsuperuser # to make use of /admin/ endpoint
If "python" doesn't work, try "python3" instead.
If you have to reload fixtures (ingredient list and tags), you might need to
get rid of the duplicate records. For that run
python manage.py del_dup_ingredients
Set DEBUG = True in recipes/settings.py sqlite3 DB is hooked up, the DB file is created in the project folder. After running in your system shell
python manage.py runserver
in your project folder the web server will be available at localhost:8000 Ctrl+C to stop the server.
You might want to try and test the project locally before rolling it to production.
In .env file list all the variables accessed in settings.py through os.getenv('VarName'),
including DEBUG set to 0.
For Django SECRET_KEY value refer to https://docs.djangoproject.com/en/3.1/ref/settings/#std:setting-SECRET_KEY
In settings.py set
DEBUG = bool(int(os.getenv('DEBUG')))
Start Docker containers with the application and the PostgreSQL database by running
docker-compose up --build in your system shell.
N.B. If you are on Windows 10 and testing locally you might want to make
the following changes in your docker-compose.yaml:
Change
volumes:
- postgres_data:/var/lib/postgresql/data/
to
volumes:
-/c/path/to/db/file/on/c/drive: /var/lib/postgresql/data/
Named volumes can fail to run on Windows. Your app will be available at localhost:80 (or just localhost)
In .env add your host url and IP address to the DJANGO_ALLOWED_HOSTS variable (use space as the delimiter). In docker-compose.py change
image: timurhamzin/foodgram
to
image: <your_user_name_on_dockerhub>/foodgram
and run docker push. On your remote server through ssh install docker and docker-compose, copy .env, .Dockerfile, docker-compose.yaml and nginx_default.conf to your chosen folder and run
docker pull
docker-compose up
docker exec -it <username>_web_1 bash
You are now in your web-app docker container. Run the following commands:
python manage.py migrate
python manage.py load_fixtures
python manage.py createsuperuser # to make use of /admin/ endpoint
Your app is available at your host's IP address and url.