# Docker Compose creates multiple containers on a single machine. # run `docker-compose up` to create and run/link the containers # https://github.com/NREL/OpenStudio-server/blob/develop/docker-compose.yml version: '3.4' services: db: image: mongo:6.0.7 ports: - "27017:27017" volumes: - dbdata:/data/db environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_USER} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD} command: "mongod --setParameter internalQueryMaxAddToSetBytes=${MONGO_MEM} --setParameter internalQueryMaxBlockingSortMemoryUsageBytes=${MONGO_MEM}" queue: image: redis:6.0.9 ports: - "6379:6379" command: "redis-server --requirepass ${REDIS_PASSWORD}" web: image: nrel/openstudio-server:latest build: context: . target: base args: rails_env: docker environment: - OS_SERVER_NUMBER_OF_WORKERS=${OS_SERVER_NUMBER_OF_WORKERS} - QUEUES=analysis_wrappers - REDIS_URL=${REDIS_URL} - MONGO_USER=${MONGO_USER} - MONGO_PASSWORD=${MONGO_PASSWORD} - SECRET_KEY_BASE=${SECRET_KEY_BASE} depends_on: - db - queue ports: - "8080:80" volumes: - osdata:/mnt/openstudio command: /usr/local/bin/start-server web-background: image: nrel/openstudio-server:latest build: context: . target: base args: rails_env: docker environment: - OS_SERVER_NUMBER_OF_WORKERS=${OS_SERVER_NUMBER_OF_WORKERS} - QUEUES=background,analyses - REDIS_URL=${REDIS_URL} - MONGO_USER=${MONGO_USER} - MONGO_PASSWORD=${MONGO_PASSWORD} - SECRET_KEY_BASE=${SECRET_KEY_BASE} depends_on: - db - queue - web volumes: - osdata:/mnt/openstudio command: /usr/local/bin/start-web-background worker: image: nrel/openstudio-server:latest build: context: . target: base args: rails_env: docker environment: - OS_SERVER_NUMBER_OF_WORKERS=${OS_SERVER_NUMBER_OF_WORKERS} - QUEUES=simulations - COUNT=1 - REDIS_URL=${REDIS_URL} - MONGO_USER=${MONGO_USER} - MONGO_PASSWORD=${MONGO_PASSWORD} - SECRET_KEY_BASE=${SECRET_KEY_BASE} depends_on: - web - db - queue - rserve command: /usr/local/bin/start-workers rserve: image: nrel/openstudio-rserve:latest build: ./docker/R environment: - OS_SERVER_NUMBER_OF_WORKERS=${OS_SERVER_NUMBER_OF_WORKERS} - REDIS_URL=${REDIS_URL} - MONGO_USER=${MONGO_USER} - MONGO_PASSWORD=${MONGO_PASSWORD} - SECRET_KEY_BASE=${SECRET_KEY_BASE} volumes: - osdata:/mnt/openstudio depends_on: - web - web-background - db volumes: osdata: external: true dbdata: external: true