VRE Backend API and Scheduler
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Broker/docker-compose.yaml.example

106 lines
3.3 KiB

version: '3'
services:
# This is the database server that is used by Django
db:
container_name: postgresdb
image: postgres:13.5-bullseye
restart: always
env_file:
- docker/project.env
# ports:
# - 5432:5432
volumes:
- postgres-data:/var/lib/postgresql/data
# This is the redis server for HUEY (background processes)
redis:
container_name: redisdb
image: redis:6.2-bullseye
env_file:
- docker/project.env
# We need the 'bash' command in order to get the environment variables
command: bash -c 'redis-server --requirepass "$${REDIS_PASSWORD}" --appendonly yes'
restart: always
volumes:
- redis-data:/data
# The Django API REST server. This should only be used for API calls
# TODO: Cleanup / split code better between API, scheduler and portal
broker-api:
container_name: broker_api
env_file:
- docker/project.env
# This feels like bad practice....
build:
context: ./
# The args below are just here for reference. For local testing, you cannot use the RUG cache
# But while building with Drones, you can. So Drones has this argument active!
# args:
# DOCKER_CACHE: registry.webhosting.rug.nl/cache/library/
dockerfile: ./docker/Dockerfile
args:
DEBUG: "False"
entrypoint: /opt/VRE/entrypoint.api.sh
command: gunicorn VRE.wsgi:application --bind 0.0.0.0:8000 --workers=4
ports:
- 8000:8000
depends_on:
- db
- redis
volumes:
- staticfiles:/opt/VRE/staticfiles
- mediafiles:/opt/VRE/mediafiles
# The standard NGINX server in front of the API. This will filter out all non API calls (/api/)
# And will also server as a static file server for the API documentation
broker-api-ngx:
container_name: broker_api_ngx
env_file:
- docker/project.env
build:
context: ./
# The args below are just here for reference. For local testing, you cannot use the RUG cache
# But while building with Drones, you can. So Drones has this argument active!
# args:
# DOCKER_CACHE: registry.webhosting.rug.nl/cache/library/
dockerfile: ./docker/Dockerfile.nginx
restart: always
ports:
- 1337:80
depends_on:
- broker-api
volumes:
- staticfiles:/var/www/staticfiles
- mediafiles:/var/www/mediafiles
# The API background scheduler based on Django and HUEY. Needs a Redis server
# This will process background tasks like creating new VPS machines
broker-scheduler:
container_name: broker_scheduler
env_file:
- docker/project.env
# This feels like bad practice....
build:
context: ./
# The args below are just here for reference. For local testing, you cannot use the RUG cache
# But while building with Drones, you can. So Drones has this argument active!
# args:
# DOCKER_CACHE: registry.webhosting.rug.nl/cache/library/
# dockerfile: ./docker/Dockerfile.scheduler
# Reuse the API docker image.....
dockerfile: ./docker/Dockerfile
args:
DEBUG: "False"
command: python manage.py run_huey
depends_on:
- broker-api
- db
- redis
volumes:
postgres-data: null
redis-data: null
staticfiles: null
mediafiles: null