Skip to content

Commit f8c9930

Browse files
authored
Enable to pass custom docker-cmd to execute application in docker (#1980)
1 parent 851a4fc commit f8c9930

File tree

6 files changed

+22
-6
lines changed

6 files changed

+22
-6
lines changed

modules/cli/src/main/scala/scala/cli/commands/package0/Package.scala

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -626,10 +626,12 @@ object Package extends ScalaCommand[PackageOptions] with BuildCommandHelpers {
626626
sys.exit(1)
627627
}
628628

629-
val exec = build.options.platform.value match {
630-
case Platform.JVM => Some("sh")
631-
case Platform.JS => Some("node")
632-
case Platform.Native => None
629+
val exec = packageOptions.dockerOptions.cmd.orElse {
630+
build.options.platform.value match {
631+
case Platform.JVM => Some("sh")
632+
case Platform.JS => Some("node")
633+
case Platform.Native => None
634+
}
633635
}
634636
val from = packageOptions.dockerOptions.from.getOrElse {
635637
build.options.platform.value match {

modules/cli/src/main/scala/scala/cli/commands/package0/PackageOptions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ final case class PackageOptions(
213213
imageRegistry = packager.dockerImageRegistry,
214214
imageRepository = packager.dockerImageRepository,
215215
imageTag = packager.dockerImageTag,
216+
cmd = packager.dockerCmd,
216217
isDockerEnabled = Some(docker)
217218
),
218219
nativeImageOptions = NativeImageOptions(

modules/cli/src/main/scala/scala/cli/commands/package0/PackagerOptions.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,12 @@ final case class PackagerOptions(
132132
)
133133
@Tag(tags.restricted)
134134
dockerImageTag: Option[String] = None,
135+
@Group(HelpGroup.Docker.toString)
136+
@HelpMessage(
137+
"Allows to override the executable used to run the application in docker, otherwise it defaults to sh for the JVM platform and node for the JS platform"
138+
)
139+
@Tag(tags.restricted)
140+
dockerCmd: Option[String] = None,
135141

136142
@Group(HelpGroup.NativeImage.toString)
137143
@HelpMessage(s"GraalVM Java major version to use to build GraalVM native images (${Constants.defaultGraalVMJavaVersion} by default)")

modules/directives/src/main/scala/scala/build/preprocessing/directives/Packaging.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ final case class Packaging(
5757
dockerFrom: Option[String] = None,
5858
dockerImageTag: Option[String] = None,
5959
dockerImageRegistry: Option[String] = None,
60-
dockerImageRepository: Option[String] = None
60+
dockerImageRepository: Option[String] = None,
61+
dockerCmd: Option[String] = None
6162
) extends HasBuildOptions {
6263
// format: on
6364
def buildOptions: Either[BuildException, BuildOptions] = either {
@@ -108,7 +109,8 @@ final case class Packaging(
108109
from = dockerFrom,
109110
imageRegistry = dockerImageRegistry,
110111
imageRepository = dockerImageRepository,
111-
imageTag = dockerImageTag
112+
imageTag = dockerImageTag,
113+
cmd = dockerCmd
112114
),
113115
nativeImageOptions = NativeImageOptions(
114116
graalvmArgs = graalvmArgs

modules/options/src/main/scala/scala/build/options/packaging/DockerOptions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ final case class DockerOptions(
77
imageRegistry: Option[String] = None,
88
imageRepository: Option[String] = None,
99
imageTag: Option[String] = None,
10+
cmd: Option[String] = None,
1011
isDockerEnabled: Option[Boolean] = None
1112
)
1213

website/docs/reference/cli-options.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,10 @@ The image repository
853853

854854
The image tag; the default tag is `latest`
855855

856+
### `--docker-cmd`
857+
858+
Allows to override the executable used to run the application in docker, otherwise it defaults to sh for the JVM platform and node for the JS platform
859+
856860
### `--graalvm-java-version`
857861

858862
GraalVM Java major version to use to build GraalVM native images (17 by default)

0 commit comments

Comments
 (0)