version: '3' networks: internal: services: fcrepo: image: ualbertalib/docker-fcrepo4:4.7 restart: unless-stopped expose: - 8080 depends_on: - fcrepodb networks: internal: environment: - CATALINA_OPTS=-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC -Dfcrepo.home=/data -Dfcrepo.object.directory=/data/objects -Dfcrepo.binary.directory=/data/binaries -Dfcrepo.postgresql.username=$POSTGRES_USER -Dfcrepo.postgresql.password=$POSTGRES_PASSWORD -Dfcrepo.postgresql.host=$POSTGRES_HOST_FCREPO -Dfcrepo.postgresql.port=$POSTGRES_PORT -Dfcrepo.modeshape.configuration=classpath:/config/jdbc-postgresql/repository.json ports: - 8080:8080 volumes: - ${DOCKER_VOLUMES_PATH_PREFIX}fcrepo:/data solr: image: solr:8 restart: unless-stopped expose: - 8983 ports: - 8983:8983 env_file: - .env environment: - OOM=script healthcheck: test: ["CMD-SHELL", "wget -O /dev/null http://localhost:8983/solr/"] interval: 30s timeout: 5s retries: 3 networks: internal: volumes: - ${DOCKER_VOLUMES_PATH_PREFIX}solr:/var/solr - ./hyrax/solr/conf:/opt/solr/solr_conf command: - sh - "-c" - "precreate-core ${SOLR_TEST_CORE} /opt/solr/solr_conf; solr-precreate ${SOLR_CORE} /opt/solr/solr_conf" fcrepodb: image: postgres:13-alpine restart: unless-stopped env_file: - .env environment: - POSTGRES_DB=${POSTGRES_DB_FCREPO} volumes: - ${DOCKER_VOLUMES_PATH_PREFIX}db-fcrepo:/var/lib/postgresql/data networks: internal: expose: - 5432 healthcheck: test: ["CMD-SHELL", "POSTGRES_PASSWORD=${POSTGRES_PASSWORD} pg_isready -U ${POSTGRES_USER} -h localhost -d ${POSTGRES_DB_FCREPO}"] interval: 30s timeout: 5s retries: 3 appdb: image: postgres:13-alpine restart: unless-stopped env_file: - .env environment: - POSTGRES_DB=${POSTGRES_DB_APP} volumes: - ${DOCKER_VOLUMES_PATH_PREFIX}db-app:/var/lib/postgresql/data networks: internal: expose: - 5432 healthcheck: test: ["CMD-SHELL", "POSTGRES_PASSWORD=${POSTGRES_PASSWORD} pg_isready -U ${POSTGRES_USER} -h localhost -d ${POSTGRES_DB_APP}"] interval: 30s timeout: 5s retries: 3 app: &app build: context: hyrax args: RAILS_ENV: ${RAILS_ENV} UPLOADS_PATH: ${UPLOADS_PATH} DERIVATIVES_PATH: ${DERIVATIVES_PATH} CACHE_PATH: ${CACHE_PATH} FITS_VERSION: ${FITS_VERSION} DOWNLOAD_PATH: ${DOWNLOAD_PATH} env_file: - .env volumes: - ${DOCKER_VOLUMES_PATH_PREFIX}file_uploads:${UPLOADS_PATH} - ${DOCKER_VOLUMES_PATH_PREFIX}derivatives:${DERIVATIVES_PATH} - ${DOCKER_VOLUMES_PATH_PREFIX}cache:${CACHE_PATH} - ${CRC_FOLDER_IMPORT_PATH}:/rub-test-data - ${DOCKER_VOLUMES_PATH_PREFIX}downloads:${DOWNLOAD_PATH} networks: internal: web: <<: *app command: bash -c "/bin/docker-entrypoint.sh" restart: unless-stopped environment: - VIRTUAL_HOST=rdms.docker - VIRTUAL_PORT=3000 depends_on: - appdb - solr - fcrepo - redis ports: - 3000:3000 networks: internal: aliases: - web expose: - 3000 workers: <<: *app command: bash -c "bundle install && bundle exec sidekiq" restart: unless-stopped depends_on: - appdb - solr - fcrepo - redis redis: image: redis:6 command: redis-server --appendonly yes restart: unless-stopped networks: internal: healthcheck: test: ["CMD-SHELL", "redis-cli ping"] interval: 30s timeout: 5s retries: 3 expose: - 6379 ports: - 6379:6379 volumes: - ${DOCKER_VOLUMES_PATH_PREFIX}redis:/data