diff --git a/docs/Docker_deployment.md b/docs/Docker_deployment.md index e82f709..8b48511 100644 --- a/docs/Docker_deployment.md +++ b/docs/Docker_deployment.md @@ -17,27 +17,36 @@ See example deployments in the sections below. These example deployments have be To run, update the configs above if necessary, build the image by running `docker-compose build`, then run `docker-compose run` -## Simple Deployment, accessed as http://localhost +# Simple Deployment, accessed as http://localhost -The main container runs migrations, mediacms_web, celery_beat, celery_workers (celery_short and celery_long services), exposed on port 80 supported by redis and postgres database. The FRONTEND_HOST in `deploy/docker/local_settings.py` is configured as http://localhost, on the docker host machine. +The main container runs migrations, mediacms_web, celery_beat, celery_workers (celery_short and celery_long services), exposed on port 80 supported by redis and postgres database. -## Server with ssl certificate through letencrypt service, https://host.com -In this case the FRONTEND_HOST should be set to https://host.com. Uses [this deployment](../docker-compose-letsencrypt.yaml). -Also you have to set a valid email on that file, on settings `LETSENCRYPT_EMAIL` + The FRONTEND_HOST in `deploy/docker/local_settings.py` is configured as http://localhost, on the docker host machine. -## Advanced Deployment, accessed as http://localhost:8000 +# Server with ssl certificate through letsencrypt service, accessed as https://my_domain.com +Before trying this out make sure the ip points to my_domain.com. + +With this method [this deployment](../docker-compose-letsencrypt.yaml) is used. + +Edit this file and set `VIRTUAL_HOST` as my_domain.com, `LETSENCRYPT_HOST` as my_domain.com, and your email on `LETSENCRYPT_EMAIL` + +Edit `deploy/docker/local_settings.py` and set https://my_domain.com as `FRONTEND_HOST` + +Now run docker-compose -f docker-compose-letsencrypt.yaml up, when installation finishes you will be able to access https://my_domain.com using a valid Letsencrypt certificate! + +# Advanced Deployment, accessed as http://localhost:8000 Here we can run 1 mediacms_web instance, with the FRONTEND_HOST in `deploy/docker/local_settings.py` configured as http://localhost:8000. This is bootstrapped by a single migrations instance and supported by a single celery_beat instance and 1 or more celery_worker instances. Redis and postgres containers are also used for persistence. Clients can access the service on http://localhost:8000, on the docker host machine. This is similar to [this deployment](../docker-compose.yaml), with a `port` defined in FRONTEND_HOST. -## Advanced Deployment, with reverse proxy, accessed as http://mediacms.io +# Advanced Deployment, with reverse proxy, accessed as http://mediacms.io Here we can use `jwilder/nginx-proxy` to reverse proxy to 1 or more instances of mediacms_web supported by other services as mentioned in the previous deployment. The FRONTEND_HOST in `deploy/docker/local_settings.py` is configured as http://mediacms.io, nginx-proxy has port 80 exposed. Clients can access the service on http://mediacms.io (Assuming DNS or the hosts file is setup correctly to point to the IP of the nginx-proxy instance). This is similar to [this deployment](../docker-compose-http-proxy.yaml). -## Advanced Deployment, with reverse proxy, accessed as https://localhost +# Advanced Deployment, with reverse proxy, accessed as https://localhost The reverse proxy (`jwilder/nginx-proxy`) can be configured to provide SSL termination using self-signed certificates, letsencrypt or CA signed certificates (see: https://hub.docker.com/r/jwilder/nginx-proxy or [LetsEncrypt Example](https://www.singularaspect.com/use-nginx-proxy-and-letsencrypt-companion-to-host-multiple-websites/) ). In this case the FRONTEND_HOST should be set to https://mediacms.io. This is similar to [this deployment](../docker-compose-http-proxy.yaml). -## A Scaleable Deployment Architecture (Docker, Swarm, Kubernetes) +# A Scaleable Deployment Architecture (Docker, Swarm, Kubernetes) The architecture below generalises all the deployment scenarios above, and provides a conceptual design for other deployments based on kubernetes and docker swarm. It allows for horizontal scaleability through the use of multiple mediacms_web instances and celery_workers. For large deployments, managed postgres, redis and storage may be adopted.