File size: 6,959 Bytes
a0cd72f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
---
version: '3'
services:
girder:
image: dsarchive/dsa_common
build: ../..
# Instead of privileged mode, fuse can use:
# devices:
# - /dev/fuse:/dev/fuse
# security_opt:
# - apparmor:unconfined
# cap_add:
# - SYS_ADMIN
# but these may be somewhat host specific, so we default to privileged. If
# the docker daemon is being run with --no-new-privileges, fuse may not
# work.
# See also https://github.com/docker/for-linux/issues/321 for possible
# methods to avoid both privileged mode and cap_add SYS_ADMIN.
privileged: true
# Set DSA_USER to a user id that is part of the docker group (e.g.,
# `DSA_USER=$(id -u):$(id -g)`). This makes files in assetstores and logs
# owned by that user and provides permissions to manage docker
environment:
DSA_USER: ${DSA_USER:-}
DSA_PROVISION_YAML: ${DSA_PROVISION_YAML:-/opt/digital_slide_archive/devops/dsa/provision.yaml}
restart: unless-stopped
# Set DSA_PORT to expose the interface on another port (default 8080).
ports:
- "${DSA_PORT:-8080}:8080"
volumes:
# Needed to use slicer_cli_web to run docker containers
- /var/run/docker.sock:/var/run/docker.sock
# Default assetstore
- ./assetstore:/assetstore
# Location of girder.cfg
- ./girder.cfg:/etc/girder.cfg
# Location of provision.py
- ./provision.py:/opt/digital_slide_archive/devops/dsa/provision.py
- ./provision.yaml:/opt/digital_slide_archive/devops/dsa/provision.yaml
- ./start_girder.sh:/opt/digital_slide_archive/devops/dsa/start_girder.sh
# Location to store logs
- ./logs:/logs
# For local development, uncomment the set of mounts associated with the
# local source files. Adding the editable egg directories first allows
# allow mounting source files from the host without breaking the internal
# data.
# - /opt/girder/girder.egg-info
# - /opt/girder/clients/python/girder_client.egg-info
# - ../../../girder:/opt/girder
# - /opt/girder_worker/girder_worker.egg-info
# - ../../../../girder_worker:/opt/girder_worker
# - /opt/girder_worker_utils/girder_worker_utils.egg-info
# - ../../../../girder_worker_utils:/opt/girder_worker_utils
# - /opt/HistomicsUI/histomicsui.egg-info
# - ../../../HistomicsUI:/opt/HistomicsUI
# - /opt/slicer_cli_web/girder_slicer_cli_web.egg-info
# - ../../../slicer_cli_web:/opt/slicer_cli_web
# - /opt/large_image/girder_annotation/girder_large_image_annotation.egg-info
# - /opt/large_image/girder/girder_large_image.egg-info
# - /opt/large_image/sources/bioformats/large_image_source_bioformats.egg-info
# - /opt/large_image/sources/openslide/large_image_source_openslide.egg-info
# - /opt/large_image/sources/ometiff/large_image_source_ometiff.egg-info
# - /opt/large_image/sources/pil/large_image_source_pil.egg-info
# - /opt/large_image/sources/test/large_image_source_test.egg-info
# - /opt/large_image/sources/dummy/large_image_source_dummy.egg-info
# - /opt/large_image/sources/tiff/large_image_source_tiff.egg-info
# - /opt/large_image/sources/mapnik/large_image_source_mapnik.egg-info
# - /opt/large_image/sources/openjpeg/large_image_source_openjpeg.egg-info
# - /opt/large_image/sources/gdal/large_image_source_gdal.egg-info
# - /opt/large_image/sources/nd2/large_image_source_nd2.egg-info
# - /opt/large_image/large_image.egg-info
# - /opt/large_image/utilities/converter/large_image_converter.egg-info
# - /opt/large_image/utilities/tasks/large_image_tasks.egg-info
# - ../../../large_image:/opt/large_image
# Add additional mounts here to get access to existing files on your
# system. Also add them to the worker container to reduce copying.
depends_on:
- mongodb
- memcached
- rabbitmq
command: /opt/digital_slide_archive/devops/dsa/start_girder.sh
mongodb:
image: "mongo:latest"
# Set DSA_USER to your user id (e.g., `DSA_USER=$(id -u):$(id -g)`)
# so that database files are owned by yourself.
user: ${DSA_USER:-PLEASE SET DSA_USER}
restart: unless-stopped
# Limiting maxConns reduces the amount of shared memory demanded by
# mongo. Remove this limit or increase the host vm.max_map_count value.
command: --maxConns 1000
volumes:
# Location to store database files
- ./db:/data/db
# Uncomment to allow access to the database from outside of the docker
# network.
# ports:
# - "27017"
logging:
options:
max-size: "10M"
max-file: "5"
memcached:
image: memcached
command: -m 4096 --max-item-size 8M
restart: unless-stopped
# Uncomment to allow access to memcached from outside of the docker network
# ports:
# - "11211"
logging:
options:
max-size: "10M"
max-file: "5"
rabbitmq:
image: "rabbitmq:latest"
restart: unless-stopped
# Uncomment to allow access to rabbitmq from outside of the docker network
# ports:
# - "5672"
environment:
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER:-}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS:-}
volumes:
- ./rabbitmq.advanced.config:/etc/rabbitmq/advanced.config:ro
logging:
options:
max-size: "10M"
max-file: "5"
worker:
image: dsarchive/dsa_common
build: ../..
# Set DSA_USER to a user id that is part of the docker group (e.g.,
# `DSA_USER=$(id -u):$(id -g)`). This provides permissions to manage
# docker
environment:
DSA_USER: ${DSA_USER:-}
DSA_WORKER_CONCURRENCY: ${DSA_WORKER_CONCURRENCY:-2}
DSA_PROVISION_YAML: ${DSA_PROVISION_YAML:-/opt/digital_slide_archive/devops/dsa/provision.yaml}
TMPDIR:
restart: unless-stopped
volumes:
# Needed to use slicer_cli_web to run docker containers
- /var/run/docker.sock:/var/run/docker.sock
# Modify the worker.local.cfg to specify a different rabbitmq server and
# then enable this mount. On the rabbitmq server, make sure you add a
# non-guest default user and use that both in the worker and in the main
# girder settings.
# - ./worker.local.cfg:/opt/girder_worker/girder_worker/worker.local.cfg
# Allow overriding the start command
- ./start_worker.sh:/opt/digital_slide_archive/devops/dsa/start_worker.sh
# Needed to allow transferring data to slicer_cli_web docker containers
- ${TMPDIR:-/tmp}:${TMPDIR:-/tmp}
# Add additional mounts here to get access to existing files on your
# system if they have the same path as on the girder container.
depends_on:
- rabbitmq
command: /opt/digital_slide_archive/devops/dsa/start_worker.sh
logging:
options:
max-size: "10M"
max-file: "5"
|