diff --git a/jib-maven-plugin/CHANGELOG.md b/jib-maven-plugin/CHANGELOG.md index dd40b24b76..e48f5f1d75 100644 --- a/jib-maven-plugin/CHANGELOG.md +++ b/jib-maven-plugin/CHANGELOG.md @@ -5,6 +5,8 @@ All notable changes to this project will be documented in this file. ### Added +- `` parameter to define container's exposed ports (similar to Dockerfile `EXPOSE`) ([#383](https://github.com/GoogleContainerTools/jib/issues/383)) + ### Changed - Fetches credentials from inferred credential helper before Docker config ([#401](https://github.com/GoogleContainerTools/jib/issues/401)) diff --git a/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/BuildDockerMojo.java b/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/BuildDockerMojo.java index 10625c778a..aa0d0a85a3 100644 --- a/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/BuildDockerMojo.java +++ b/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/BuildDockerMojo.java @@ -87,7 +87,8 @@ public void execute() throws MojoExecutionException { .setMainClass(mainClass) .setJavaArguments(getArgs()) .setJvmFlags(getJvmFlags()) - .setEnvironment(getEnvironment()); + .setEnvironment(getEnvironment()) + .setExposedPorts(getExposedPorts()); CacheConfiguration applicationLayersCacheConfiguration = CacheConfiguration.forPath(mavenProjectProperties.getCacheDirectory()); buildConfigurationBuilder.setApplicationLayersCacheConfiguration( diff --git a/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/BuildImageMojo.java b/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/BuildImageMojo.java index e1d641f880..02353c414d 100644 --- a/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/BuildImageMojo.java +++ b/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/BuildImageMojo.java @@ -104,6 +104,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { .setJavaArguments(getArgs()) .setJvmFlags(getJvmFlags()) .setEnvironment(getEnvironment()) + .setExposedPorts(getExposedPorts()) .setTargetFormat(ImageFormat.valueOf(getFormat()).getManifestTemplateClass()); CacheConfiguration applicationLayersCacheConfiguration = CacheConfiguration.forPath(mavenProjectProperties.getCacheDirectory()); diff --git a/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/DockerContextMojo.java b/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/DockerContextMojo.java index 4b032f5758..5df5565f06 100644 --- a/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/DockerContextMojo.java +++ b/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/DockerContextMojo.java @@ -63,6 +63,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { .setJvmFlags(getJvmFlags()) .setMainClass(mainClass) .setJavaArguments(getArgs()) + .setExposedPorts(getExposedPorts()) .generate(Paths.get(targetDir)); mavenBuildLogger.info("Created Docker context at " + targetDir); diff --git a/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/JibPluginConfiguration.java b/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/JibPluginConfiguration.java index 708041b5a2..97323408dc 100644 --- a/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/JibPluginConfiguration.java +++ b/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/JibPluginConfiguration.java @@ -72,6 +72,8 @@ public static class ContainerParameters { @Nullable @Parameter(required = true) private String format = "Docker"; + + @Parameter private List ports = Collections.emptyList(); } /** @@ -194,6 +196,10 @@ List getArgs() { return container.args; } + List getExposedPorts() { + return container.ports; + } + String getFormat() { return Preconditions.checkNotNull(container.format); } diff --git a/jib-maven-plugin/src/test/java/com/google/cloud/tools/jib/maven/BuildDockerMojoIntegrationTest.java b/jib-maven-plugin/src/test/java/com/google/cloud/tools/jib/maven/BuildDockerMojoIntegrationTest.java index 675c31cf9e..2ec8957884 100644 --- a/jib-maven-plugin/src/test/java/com/google/cloud/tools/jib/maven/BuildDockerMojoIntegrationTest.java +++ b/jib-maven-plugin/src/test/java/com/google/cloud/tools/jib/maven/BuildDockerMojoIntegrationTest.java @@ -21,6 +21,7 @@ import java.nio.file.Path; import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; +import org.hamcrest.CoreMatchers; import org.junit.Assert; import org.junit.ClassRule; import org.junit.Test; @@ -54,6 +55,15 @@ private static String buildToDockerDaemonAndRun(Path projectRoot, String imageRe verifier.executeGoal("jib:" + BuildDockerMojo.GOAL_NAME); verifier.verifyErrorFreeLog(); + Assert.assertThat( + new Command("docker", "inspect", imageReference).run(), + CoreMatchers.containsString( + " \"ExposedPorts\": {\n" + + " \"1000/tcp\": {},\n" + + " \"2000/udp\": {},\n" + + " \"2001/udp\": {},\n" + + " \"2002/udp\": {},\n" + + " \"2003/udp\": {}")); return new Command("docker", "run", imageReference).run(); } diff --git a/jib-maven-plugin/src/test/java/com/google/cloud/tools/jib/maven/BuildImageMojoIntegrationTest.java b/jib-maven-plugin/src/test/java/com/google/cloud/tools/jib/maven/BuildImageMojoIntegrationTest.java index d5e5f4c588..feeb8371a6 100644 --- a/jib-maven-plugin/src/test/java/com/google/cloud/tools/jib/maven/BuildImageMojoIntegrationTest.java +++ b/jib-maven-plugin/src/test/java/com/google/cloud/tools/jib/maven/BuildImageMojoIntegrationTest.java @@ -72,6 +72,15 @@ private static String buildAndRun(Path projectRoot, String imageReference) timeOne > timeTwo); new Command("docker", "pull", imageReference).run(); + Assert.assertThat( + new Command("docker", "inspect", imageReference).run(), + CoreMatchers.containsString( + " \"ExposedPorts\": {\n" + + " \"1000/tcp\": {},\n" + + " \"2000/udp\": {},\n" + + " \"2001/udp\": {},\n" + + " \"2002/udp\": {},\n" + + " \"2003/udp\": {}")); return new Command("docker", "run", imageReference).run(); } diff --git a/jib-maven-plugin/src/test/java/com/google/cloud/tools/jib/maven/DockerContextMojoIntegrationTest.java b/jib-maven-plugin/src/test/java/com/google/cloud/tools/jib/maven/DockerContextMojoIntegrationTest.java index 7a92362333..8929ea48b9 100644 --- a/jib-maven-plugin/src/test/java/com/google/cloud/tools/jib/maven/DockerContextMojoIntegrationTest.java +++ b/jib-maven-plugin/src/test/java/com/google/cloud/tools/jib/maven/DockerContextMojoIntegrationTest.java @@ -22,6 +22,7 @@ import java.nio.file.Path; import org.apache.maven.it.VerificationException; import org.apache.maven.it.Verifier; +import org.hamcrest.CoreMatchers; import org.junit.Assert; import org.junit.ClassRule; import org.junit.Test; @@ -50,6 +51,16 @@ public void testExecute() throws VerificationException, IOException, Interrupted String imageName = "jib/integration-test"; new Command("docker", "build", "-t", imageName, dockerContextDirectory.toString()).run(); + Assert.assertThat( + new Command("docker", "inspect", imageName).run(), + CoreMatchers.containsString( + " \"ExposedPorts\": {\n" + + " \"1000/tcp\": {},\n" + + " \"2000/udp\": {},\n" + + " \"2001/udp\": {},\n" + + " \"2002/udp\": {},\n" + + " \"2003/udp\": {}")); + Assert.assertEquals( "Hello, world. An argument.\n", new Command("docker", "run", imageName).run()); } diff --git a/jib-maven-plugin/src/test/resources/projects/default-target/pom.xml b/jib-maven-plugin/src/test/resources/projects/default-target/pom.xml index 4e7f4b9249..3ac515e2da 100644 --- a/jib-maven-plugin/src/test/resources/projects/default-target/pom.xml +++ b/jib-maven-plugin/src/test/resources/projects/default-target/pom.xml @@ -40,6 +40,10 @@ An argument. + + 1000/tcp + 2000-2003/udp + true diff --git a/jib-maven-plugin/src/test/resources/projects/empty/pom.xml b/jib-maven-plugin/src/test/resources/projects/empty/pom.xml index 3e301cbb2e..f5446efe97 100644 --- a/jib-maven-plugin/src/test/resources/projects/empty/pom.xml +++ b/jib-maven-plugin/src/test/resources/projects/empty/pom.xml @@ -31,6 +31,12 @@ gcr.io/jib-integration-testing/emptyimage:maven + + + 1000/tcp + 2000-2003/udp + + true diff --git a/jib-maven-plugin/src/test/resources/projects/simple/pom.xml b/jib-maven-plugin/src/test/resources/projects/simple/pom.xml index 38e76f6f5c..893473e3f8 100644 --- a/jib-maven-plugin/src/test/resources/projects/simple/pom.xml +++ b/jib-maven-plugin/src/test/resources/projects/simple/pom.xml @@ -43,6 +43,10 @@ An argument. + + 1000/tcp + 2000-2003/udp + true