[ad_1]
I have a simple Scala app which using dockerfile and docker-compose.
Dockerfile
looks like:
FROM hseeberger/scala-sbt:8u222_1.3.5_2.13.1
WORKDIR /my-app
COPY . /my-app
RUN sbt compile
EXPOSE 8000 8080
CMD sbt run
docker-compose.yaml
:
version: "3.3"
services:
app:
build: .
ports:
- "8080:8080"
- "8000:8000"
postgres:
image: postgres:latest
expose:
- "5432"
ports:
- "5432:5432"
hostname: postgres
environment:
- POSTGRES_DB=customers
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
build.sbt
file:
import sbt.Keys.mainClass
ThisBuild / version := "0.1.0-SNAPSHOT"
ThisBuild / scalaVersion := "2.13.8"
mainClass := Some("my.app.Main")
lazy val root = (project in file("."))
.settings(
name := "my-app"
)
When I ran it via docker-compose up
command, I got an error:
app_1 | [info] welcome to sbt 1.6.2 (Oracle Corporation Java 1.8.0_222)
app_1 | [info] loading project definition from /opt/docker/project
app_1 | [info] loading settings for project root from build.sbt ...
app_1 | [info] set current project to my-app (in build file:/opt/docker/)
app_1 | [error] java.lang.RuntimeException: No main class detected.
app_1 | [error] at scala.sys.package$.error(package.scala:30)
app_1 | [error] stack trace is suppressed; run 'last Compile / bgRun' for the full output
app_1 | [error] (Compile / bgRun) No main class detected.
It seems it could not find Main
class even if it is defined in build.sbt
file.
When I ran it just with sbt run
everything works fine and Main
is found correctly. The problem exists only when I want to run app with docker-compose
.
Do you know how I can fix it?
[ad_2]