You can easily deploy your Django application to Elasticbeastlk (EB) by following these simple steps.
Note, while creating your application, add
Also ensure you have the Elastic Beanstalk cli 'eb' installed on your local machine.
to your ALLOWED_HOSTS in your application settings.py, also add this line
import os live = os.getenv("LIVE")
Add "live" to your ALLOWED_HOSTS too, we will update it with the URL elastic beanstalk will provide us later.
Create a file with the list of requirements for the application to run by running
pip freeze > requirements.txt
Create your Dockerfile
# the base image to run your application FROM python:3.8.10-slim # setup environment variable ENV DockerHOME=/home/app/webapp # set work directory RUN mkdir -p $DockerHOME # where your code lives WORKDIR $DockerHOME # set environment variables # this ensures that the Python interpreter doesn’t generate .pyc files, we don't need them ENV PYTHONDONTWRITEBYTECODE 1 # this will send python output straight to the terminal(standard output) without being buffered ENV PYTHONUNBUFFERED 1 # install dependencies RUN pip install --upgrade pip # copy the whole project to your docker home directory. COPY . $DockerHOME # run this command to install all dependencies RUN pip install -r requirements.txt # port where the Django app runs EXPOSE 5000 # start the server on port 5000, this is what EB listens for CMD ["python", "manage.py", "runserver", "0.0.0.0:5000"]
On your local machine, you can test your EB deployment by running
eb inti -p docker _application_name_
and run it with
eb local run --port 5000
To deploy the application, run
eb create _environment_name_
and follow the prompts
When you are done, use
to open the application
If this tells you to add the URL to ALLOWED_HOSTS, copy the URL and add it to "software" with the name "live" (as we mentioned above) in "configuration" under the environment tab like so.