OHDSI / Perseus

[under development] Tools for ETL into OMOP CDM and deployment of OHDSI toolstack
Apache License 2.0
32 stars 8 forks source link

Changing Perseus standard ports to accomodate other docker stacks on the same machine #64

Open sudoshi opened 9 months ago

sudoshi commented 9 months ago

Off prompts -

Summary

After 4+ months away from the project, I restarted my Perseus VM and re-familiarized myself with the application. I then tried to install it on my main server where I run other stacks, including Broadsea. I understand that Ajit and Lee are endeavoring to include a Perseus profile in Broadsea 3.1 and much work has been accomplished.

For now, I would like to understand the implications of changing the standard ports specified in the docker-compose.yml. I made port adjustments in the attached file. (docker-compose.txt)

Value Summary

Clarification on what breaks and what are the best ports/method to change to ensure compatibility in a multi-stack installation environment would assist in efforts currently to utilize the application stack as well as integrate it as a profile along with other useful stacks to the OHDSI community.

sudoshi commented 9 months ago
services:
  web:
    image: perseushub/web:latest
    build: ./nginx
    container_name:
      web
    ports:
      - "80:80"  #conflicts with Broadsea-content
    restart: always
  shareddb:
    image: perseushub/shareddb:latest
    build: ./shared-db
    container_name: shareddb
    volumes:
      - shareddb:/data/postgres
    ports:
      - "5432:5432"
  files-manager:
    image: perseushub/files-manager:latest
    build: ./files-manager
    container_name: files-manager
    ports:
      - "10500:10500"
    environment:
      - SPRING_PROFILES_ACTIVE=docker
    depends_on:
      - shareddb
  user:
    image: perseushub/user:latest
    build: ./user
    container_name: user
    environment:
      USER_ENV: Docker
    env_file:
      - user/user-envs.txt
    ports:
      - "5001:5001"
    depends_on:
      - shareddb
  backend:
    image: perseushub/backend:latest
    build: ./perseus-api
    container_name: backend
    environment:
      PERSEUS_ENV: Docker
    ports:
      - "5004:5004"
    depends_on:
      - shareddb
      - files-manager
  frontend:
    image: perseushub/frontend:latest
    build:
      context: ./UI
      args:
        env: prod
    container_name:
      frontend
    ports:
      - "4200:4200"
  white-rabbit:
    image: perseushub/white-rabbit:latest
    build: ../WhiteRabbit
    container_name:
      white-rabbit
    ports:
      - "8007:8000"
    environment:
      - SPRING_PROFILES_ACTIVE=docker
    depends_on:
      - shareddb
      - files-manager
  vocabularydb:
    image: perseushub/vocabularydb:latest
    build: ./vocabulary-db
    container_name: vocabularydb
    healthcheck:
      test: [ "CMD", "pg_isready", "-q", "-d", "vocabulary", "-U", "admin" ]
      timeout: 60s
      interval: 30s
      retries: 10
    volumes:
      - vocabularydb:/data/postgres
    ports:
      - "5431:5432"
  cdm-builder:
    image: perseushub/cdm-builder:latest
    build: ../ETL-CDMBuilder
    container_name:
      cdm-builder
    ports:
      - "9000:9000"
    environment:
      - ASPNETCORE_ENVIRONMENT=Docker
    depends_on:
      - shareddb
      - files-manager
      - vocabularydb
  solr:
    image: perseushub/solr:latest
    build: ./solr
    container_name: solr
    ports:
      - "8983:8983"
    volumes:
      - solr:/var/solr
    depends_on:
      - vocabularydb
  athena:
    image: perseushub/athena:latest
    build: ./athena-api
    container_name: athena
    environment:
      ATHENA_ENV: Docker
    ports:
      - "5002:5002"
    depends_on:
      - solr
  usagi:
    image: perseushub/usagi:latest
    build: ./usagi-api
    command: python /app/main.py
    container_name: usagi
    environment:
      USAGI_ENV: Docker
    ports:
      - "5003:5003"
    depends_on:
      - shareddb
      - solr
  r-serve:
    image: perseushub/r-serve:latest
    build:
      context: ../DataQualityDashboard/R
      args:
        prop: docker
    container_name:
      r-serve
    ports:
      - "6311:6311"
    depends_on:
      - shareddb
  data-quality-dashboard:
    image: perseushub/data-quality-dashboard:latest
    build:
      context: ../DataQualityDashboard
    container_name:
      data-quality-dashboard
    ports:
      - "8001:8001"
    environment:
      - SPRING_PROFILES_ACTIVE=docker
    depends_on:
      - shareddb
      - files-manager
      - r-serve
  swagger:
    image: perseushub/swagger:latest
    build: ./swagger-ui
    container_name: swagger
    ports:
      - "8080:8080"  #conflicts with Traefik Dasboard
volumes:
  shareddb:
  vocabularydb:
  solr:
sudoshi commented 9 months ago

New docker compose to enable reverse proxy:

version: '3.9'

services:
  web:
    image: perseushub/web:latest
    build: ./nginx
    container_name: web
    expose:
      - "80"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.web.rule=Host(`perseus.acumenus.net`)"
      - "traefik.http.routers.web.entrypoints=websecure"
      - "traefik.http.routers.web.tls.certresolver=myresolver"
      - "traefik.http.services.web.loadbalancer.server.port=80"

  shareddb:
    image: perseushub/shareddb:latest
    build: ./shared-db
    container_name: shareddb
    volumes:
      - shareddb:/data/postgres
    expose:
      - "5432"
    labels:
      - "traefik.enable=true"

  files-manager:
    image: perseushub/files-manager:latest
    build: ./files-manager
    container_name: files-manager
    expose:
      - "10500"
    environment:
      - SPRING_PROFILES_ACTIVE=docker
    depends_on:
      - shareddb
    labels:
      - "traefik.enable=true"

  user:
    image: perseushub/user:latest
    build: ./user
    container_name: user
    environment:
      USER_ENV: Docker
    env_file:
      - user/user-envs.txt
    expose:
      - "5001"
    depends_on:
      - shareddb
    labels:
      - "traefik.enable=true"

  backend:
    image: perseushub/backend:latest
    build: ./perseus-api
    container_name: backend
    environment:
      PERSEUS_ENV: Docker
    expose:
      - "5004"
    depends_on:
      - shareddb
      - files-manager
    labels:
      - "traefik.enable=true"

  frontend:
    image: perseushub/frontend:latest
    build:
      context: ./UI
      args:
        env: prod
    container_name:
      frontend
    expose:
      - "4200"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.web.rule=Host(`perseus.acumenus.net`)"
      - "traefik.http.routers.web.entrypoints=websecure"
      - "traefik.http.routers.web.tls.certresolver=myresolver"
      - "traefik.http.services.web.loadbalancer.server.port=4200"

  white-rabbit:
    image: perseushub/white-rabbit:latest
    build: ../WhiteRabbit
    container_name:
      white-rabbit
    expose:
      - "8000"
    environment:
      - SPRING_PROFILES_ACTIVE=docker
    depends_on:
      - shareddb
      - files-manager
    labels:
      - "traefik.enable=true"

  vocabularydb:
    image: perseushub/vocabularydb:latest
    build: ./vocabulary-db
    container_name: vocabularydb
    healthcheck:
      test: [ "CMD", "pg_isready", "-q", "-d", "vocabulary", "-U", "admin" ]
      timeout: 60s
      interval: 30s
      retries: 10
    volumes:
      - vocabularydb:/data/postgres
    ports:
      - "5431:5432"
    labels:
      - "traefik.enable=true"

  cdm-builder:
    image: perseushub/cdm-builder:latest
    build: ../ETL-CDMBuilder
    container_name:
      cdm-builder
    expose:
      - "9000"
    environment:
      - ASPNETCORE_ENVIRONMENT=Docker
    depends_on:
      - shareddb
      - files-manager
      - vocabularydb
    labels:
      - "traefik.enable=true"

  solr:
    image: perseushub/solr:latest
    build: ./solr
    container_name: solr
    expose:
      - "8983"
    volumes:
      - solr:/var/solr
    depends_on:
      - vocabularydb
    labels:
      - "traefik.enable=true"

  athena:
    image: perseushub/athena:latest
    build: ./athena-api
    container_name: athena
    environment:
      - ATHENA_ENV=Docker
    expose:
      - "5002"
    depends_on:
      - solr
    labels:
      - "traefik.enable=true"

  usagi:
    image: perseushub/usagi:latest
    build: ./usagi-api
    command: python /app/main.py
    container_name: usagi
    environment:
      USAGI_ENV: Docker
    expose:
      - "5003"
    depends_on:
      - shareddb
      - solr
    labels:
      - "traefik.enable=true"

  r-serve:
    image: perseushub/r-serve:latest
    build:
      context: ../DataQualityDashboard/R
      args:
        prop: docker
    container_name:
      r-serve
    expose:
      - "6311"
    depends_on:
      - shareddb
    labels:
      - "traefik.enable=true"

  data-quality-dashboard:
    image: perseushub/data-quality-dashboard:latest
    build:
      context: ../DataQualityDashboard
    container_name:
      data-quality-dashboard
    expose:
      - "8001"
    environment:
      - SPRING_PROFILES_ACTIVE=docker
    depends_on:
      - shareddb
      - files-manager
      - r-serve
    labels:
      - "traefik.enable=true"

  swagger:
    image: perseushub/swagger:latest
    build: ./swagger-ui
    container_name: swagger
    expose:
      - "8080"
    labels:
      - "traefik.enable=true"

networks:
    perseus_default:
    traefik_proxy:
volumes:
  shareddb:
  vocabularydb:
  solr:

Screenshot: 2023-12-02_00-34 v0.1 Goal state: parthenon