I am trying to put up a simple django app on elastic beanstalk. I thought I had the static parts of the app figured out as it works with heroku and on a server that was set up
To support multiple apps and do this you need to run collectstatic
Settings.py
STATIC_ROOT = os.path.join(BASE_DIR, "static")
Make sure you have a folder called "static" in your root
In your ebs config file eg. (02_python.config or similar)
option_settings:
...
"aws:elasticbeanstalk:container:python:staticfiles":
/static/: "static/"
Then before you upload to ebs run python manage.py collectstatic
This collects all the static files in one folder which you have already pointed to in your config.
Then you can run eb deploy
like normal
Opptionally if you don't want to commit the static files to your source control twice and want the server to do this for you add this to your config
container_commands:
01_collectstatic:
command: "source /opt/python/run/venv/bin/activate && python manage.py collectstatic --noinput"
So your file should look something like this:
container_commands:
01_collectstatic:
command: "source /opt/python/run/venv/bin/activate && python manage.py collectstatic --noinput"
option_settings:
"aws:elasticbeanstalk:container:python":
WSGIPath: app/wsgi.py
"aws:elasticbeanstalk:container:python:staticfiles":
/static/: "static/"
This will run collect static for you when you run eb deploy