dsa4hf / dsa /docker-compose.yml
andreped's picture
Started setting up Dockerfile and HF integration
a0cd72f
---
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"