* update fixture region * update geoserver and geonode in one container * clean code * update prod setting to receive PROXY_ALLOWED_HOSTS * update architecture to be like geonode * update DATABASE setting * update DATABASE setting * update DATABASE setting * update DATABASE setting * update settings * clean code * update setting to access /geoserver without /api/geoserver * clean code * clean code * Use uwsgi rather than development server. * clean code * update compose and docker file of geoserver * update django_haitidata * update django_haitidata 2 * update django_haitidata 3 * update settings
2.8 KiB
Deploying with docker
Note: This documentation is intentionally generic so that it can be copy-pasted between projects - do not put project specific details here.
This document explains how to do various sysadmin related tasks when your site has been deployed under docker. These deployment modes are supported:
- production: no debug etc is enabled, has its own discrete database. Configure your production environment in core.settings.prod_docker - this DJANGO_SETTINGS_MODULE is used when running in production mode.
- staging: Configure your staging environment in core.settings.staging_docker - this DJANGO_SETTINGS_MODULE is used when running in production mode.
Build your docker images and run them
Production
You can simply run the provided script and it will build and deploy the docker images for you in production mode.
cd deployment
# allow pg volume to be written to
sudo chmod -R a+rwX pg/postgres_data/
make deploy
sudo chmod -R a+rwX static
Now point your browser at the ip of the web container on port 8080 or to the host port mapping as defined in the fig.yml file.
To make a superuser account do:
make shell
python manage.py createsuperuser
exit
Staging
The procedure is exactly the same as production, but you should preceed
each command with 'staging' e.g. make staging-deploy.
Note: VERY IMPORTANT - for staging deployment you should use a separate git checkout from the production checkout as the code from the git checkout is shared into the source tree.
Using make
The following key make commands are provided for production:
- build - build production containers
- run - builds then runs db and uwsgi services
- collectstatic - collect static in production instance
- migrate - run django migrations in production instance
Additional make commands are provided in the Makefile - please see there for details.
Arbitrary commands
Running arbitrary management commands is easy
Setup nginx reverse proxy
You should create a new nginx virtual host - please see
*-nginx.conf in the deployment directory for examples. There is
one provided for production and one for staging.
Simply add the example file (renaming them as needed) to your
/etc/nginx/sites-enabled/ directory and then modify the contents to
match your local filesystem paths. Then use
sudo nginx -t
To verify that your configuration is correct and then reload / restart nginx e.g.
sudo /etc/init.d/nginx restart
Managing containers
Please refer to the general fig documentation for further notes on how to manage the infrastructure using fig.
Configuration options
You can configure the base port used and various other options like the
image organisation namespace and postgis user/pass by editing the fig*.yml
files.