UNC-Libraries/hy-c

View on GitHub
docker-compose.yml

Summary

Maintainability
Test Coverage
version: '3.7'

services:
  web: &web
    build:
      context: .
    image: cazzerson/hy-c-universal
    platform: linux/amd64
    depends_on:
      - clamav
      - db
      - fedora
      - solr8
    env_file:
      - docker/.env
    ports:
      - 3000:3000
    volumes:
      - mount-code:/hyrax
      - mount-gems:/hyc-gems
      - fcrepo_data:/opt/fedora/
      - hyrax_data:/opt/hyrax
      - ftp_data:/opt/data/ftp
    stdin_open: true
    tty: true
    networks:
      - hycdev
  sidekiq:
    build:
      context: .
    image: cazzerson/hy-c-universal
    platform: linux/amd64
    depends_on:
      - clamav
      - db
      - fedora
      - redis
      - solr8
      - web
    command: sh /hyrax/docker/start-sidekiq.sh
    env_file:
      - docker/.env
    volumes:
      - mount-code:/hyrax
      - mount-gems:/hyc-gems
      - fcrepo_data:/opt/fedora/
      - hyrax_data:/opt/hyrax
      - ftp_data:/opt/data/ftp
    networks:
      - hycdev
  clamav:
    image: tiredofit/clamav
    ports:
      - "3310:3310"
    volumes:
      - clam:/var/lib/clamav
      - hyrax_data:/opt/hyrax
      - mount-code:/hyrax
    networks:
      - hycdev
  db:
    image: postgres:14-alpine
    volumes:
      - pg_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: hyrax
      POSTGRES_PASSWORD: password
    networks:
      - hycdev
  fedora:
    image: cazzerson/fcrepo4:4.7.5
    ports:
      - "8984:8080"
    volumes:
      - fcrepo_data:/usr/local/tomcat/fcrepo4-data/
    environment:
      CATALINA_OPTS: "-Djava.awt.headless=true -server -Xms1G -Xmx2G -XX:MaxNewSize=1G -XX:+HeapDumpOnOutOfMemoryError -Dfcrepo.modeshape.configuration=classpath:/config/file-simple/repository.json"
    stdin_open: true
    tty: true
    networks:
      - hycdev
  redis:
    image: redis:5.0.14
    environment:
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      - ALLOW_EMPTY_PASSWORD=yes
    volumes:
      - redis_data:/data
    ports:
      - "6379:6379"
    networks:
      - hycdev
  solr8:
    image: solr:8.11-slim
    volumes:
      - solr8-data:/opt/solr/server/solr/configsets/hy-c
    ports:
      - "8983:8983"
    command: >
      bash -c "
      precreate-core hydra-development /opt/solr/server/solr/configsets/hy-c;
      precreate-core hydra-test /opt/solr/server/solr/configsets/hy-c;
      exec solr -f
      "
    networks:
      - hycdev
volumes:
  mount-code:
  mount-gems:
  solr8-data:
  clam:
  pg_data:
  fcrepo_data:
  redis_data:
  hyrax_data:
  ftp_data:

networks:
  hycdev:
    driver: bridge
    driver_opts:
      com.docker.network.bridge.name: br-hycdev

x-mutagen:
  sync:
    defaults:
      mode: "two-way-resolved"
      ignore:
        vcs: true
        paths:
          - ".DS_Store"
    mount-code:
      alpha: '.'
      beta: "volume://mount-code"
      configurationBeta:
        permissions:
          defaultFileMode: 0644
          defaultDirectoryMode: 0755
    #mount-gems:
      #alpha: '../hyc-gems'
      #beta: "volume://mount-gems"
    # TODO: can we move these to simple volumes by auto-copying the configs over?
    solr8-data:
      alpha: './solr/config'
      beta: 'volume://solr8-data'
      configurationBeta:
        permissions:
          defaultOwner: 'id:8983'
          defaultGroup: 'id:8983'