У меня есть 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 контейнер, где оба являются игровыми приложениями, а один является подпроектом другого?