Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
sudoshi opened this issue Nov 27, 2023 · 2 comments

Comments

@sudoshi
Copy link

sudoshi commented Nov 27, 2023

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
Copy link
Author

sudoshi commented Nov 28, 2023

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
Copy link
Author

sudoshi commented Dec 2, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant