Запуск Scala проекта и подпроекта в виде двух отдельных приложений на разных портах в Docker с использованием Play Framework - PullRequest
0 голосов
/ 31 марта 2020

У меня есть Scala приложение, которое по сути является службой API. Служба API - это приложение Play, которое при запуске прослушивает указанный порт c.

У меня есть отдельный сервис, который публикует метаданные для API. Эта служба метаданных публикует информацию, указывающую c на API, и прослушивает другой порт.

В текущей структуре моего проекта приложение API является проектом root, а служба метаданных является подпроектом.

Я не уверен, возможно ли это, но я хотел бы создать образ docker, в котором и API, и сервер метаданных запускаются в одном и том же контейнере на разных портах.

В настоящее время при создании контейнера docker работает только API, а служба метаданных - нет. Однако когда я выполняю sbt run в рамках проекта метаданных, он успешно запускается

build.sbt для службы API:

lazy val metadata = (project in file("path/to/api/metadata"))

lazy val api = (project in file("path/to/api"))
  .dependsOn(
    metadata,
  )
  .enablePlugins(PlayService, PlayLayoutPlugin)
  .aggregate(metadata)
  .settings(
    name := "API_NAME_HERE",
    version := "API_VERSION_HERE",
    scalaVersion := "2.12.8",
    libraryDependencies ++= Seq( // library dependencies defined here
    ),
    packageName in Docker := "DOCKER_URL_HERE/API_PATH_HERE",
    mappings in Docker += (resourceDirectory in Compile).value / "extra.jar" -> "/opt/docker/conf/extra.jar",
  )

Как запустить две службы на разных портах в один и тот же docker контейнер, где оба являются игровыми приложениями, а один является подпроектом другого?

...