Skip to content

Commit 29a5ce1

Browse files
NeQuissimusmuuki88
authored andcommitted
Add ability to expose UDP ports (#881)
1 parent 2fdc0d3 commit 29a5ce1

File tree

5 files changed

+13
-7
lines changed

5 files changed

+13
-7
lines changed

src/main/scala/com/typesafe/sbt/packager/docker/DockerPlugin.scala

+4-3
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ object DockerPlugin extends AutoPlugin {
7474
override lazy val projectSettings = Seq(
7575
dockerBaseImage := "openjdk:latest",
7676
dockerExposedPorts := Seq(),
77+
dockerExposedUdpPorts := Seq(),
7778
dockerExposedVolumes := Seq(),
7879
dockerRepository := None,
7980
dockerAlias := DockerAlias(dockerRepository.value, None, packageName.value, Some(version.value)),
@@ -99,7 +100,7 @@ object DockerPlugin extends AutoPlugin {
99100
makeAdd(dockerBaseDirectory),
100101
makeChown(user, group, "." :: Nil)
101102
) ++
102-
makeExposePorts(dockerExposedPorts.value) ++
103+
makeExposePorts(dockerExposedPorts.value, dockerExposedUdpPorts.value) ++
103104
makeVolumes(dockerExposedVolumes.value, user, group) ++
104105
Seq(
105106
makeUser(user),
@@ -207,8 +208,8 @@ object DockerPlugin extends AutoPlugin {
207208
* @param exposedPorts
208209
* @return if ports are exposed the EXPOSE command
209210
*/
210-
private final def makeExposePorts(exposedPorts: Seq[Int]): Option[CmdLike] = {
211-
if (exposedPorts.isEmpty) None else Some(Cmd("EXPOSE", exposedPorts mkString " "))
211+
private final def makeExposePorts(exposedPorts: Seq[Int], exposedUdpPorts: Seq[Int]): Option[CmdLike] = {
212+
if (exposedPorts.isEmpty) None else Some(Cmd("EXPOSE", (exposedPorts.map(_.toString) ++ exposedUdpPorts.map(_.toString).map(_ + "/udp")) mkString " "))
212213
}
213214

214215
/**

src/main/scala/com/typesafe/sbt/packager/docker/Keys.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ trait DockerKeys {
1212
val dockerPackageMappings = TaskKey[Seq[(File, String)]]("docker-package-mappings", "Generates location mappings for Docker build.")
1313

1414
val dockerBaseImage = SettingKey[String]("dockerBaseImage", "Base image for Dockerfile.")
15-
val dockerExposedPorts = SettingKey[Seq[Int]]("dockerExposedPorts", "Ports exposed by Docker image")
15+
val dockerExposedPorts = SettingKey[Seq[Int]]("dockerExposedPorts", "TCP Ports exposed by Docker image")
16+
val dockerExposedUdpPorts = SettingKey[Seq[Int]]("dockerExposedUdpPorts", "UDP Ports exposed by Docker image")
1617
val dockerExposedVolumes = SettingKey[Seq[String]]("dockerExposedVolumes", "Volumes exposed by Docker image")
1718
val dockerRepository = SettingKey[Option[String]]("dockerRepository", "Repository for published Docker image")
1819
val dockerAlias = SettingKey[DockerAlias]("dockerAlias", "Docker alias for the built image")

src/sbt-test/docker/ports/build.sbt

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ name := "simple-test"
44

55
version := "0.1.0"
66

7-
dockerExposedPorts := Seq(9000)
7+
dockerExposedPorts := Seq(9000, 9001)
8+
dockerExposedUdpPorts := Seq(10000, 10001)

src/sbt-test/docker/ports/test

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# Stage the distribution and ensure files show up.
22
> docker:stage
3-
$ exec grep -q -F 'EXPOSE 9000' target/docker/Dockerfile
3+
$ exec grep -q -F 'EXPOSE 9000 9001 10000/udp 10001/udp' target/docker/Dockerfile

src/sphinx/formats/docker.rst

+4-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,10 @@ Environment Settings
9999
The user to use when executing the application. Files below the install path also have their ownership set to this user.
100100

101101
``dockerExposedPorts``
102-
A list of ports to expose from the Docker image.
102+
A list of TCP ports to expose from the Docker image.
103+
104+
``dockerExposedUdpPorts``
105+
A list of UDP ports to expose from the Docker image.
103106

104107
``dockerExposedVolumes in Docker``
105108
A list of data volumes to make available in the Docker image.

0 commit comments

Comments
 (0)