Skip to content

Commit 12fa965

Browse files
CAMEL-23192: Produce Dockerfile.jvm on JBang Quarkus runtime export
1 parent 4b257f0 commit 12fa965

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

  • dsl/camel-jbang

dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.io.InputStream;
2121
import java.nio.file.Files;
2222
import java.nio.file.Path;
23+
import java.nio.file.StandardCopyOption;
2324
import java.util.ArrayList;
2425
import java.util.Arrays;
2526
import java.util.HashMap;
@@ -287,25 +288,31 @@ protected String applicationPropertyLine(String key, String value) {
287288

288289
@Override
289290
protected void copyDockerFiles(String buildDir) throws Exception {
291+
Path dockerSrc = Path.of(buildDir).resolve("src/main/docker");
290292
if ("uber-jar".equals(quarkusPackageType)) {
291293
// For uber-jar, the generic Dockerfile works as-is
292294
super.copyDockerFiles(buildDir);
293295
} else {
294296
// For fast-jar, use a Quarkus-specific JVM Dockerfile
295-
Path docker = Path.of(buildDir).resolve("src/main/docker");
296-
Files.createDirectories(docker);
297+
Files.createDirectories(dockerSrc);
297298
InputStream is
298299
= ExportQuarkus.class.getClassLoader().getResourceAsStream("quarkus-docker/Dockerfile.jvm");
299300
if (is != null) {
300-
PathUtils.copyFromStream(is, docker.resolve("Dockerfile"), true);
301+
PathUtils.copyFromStream(is, dockerSrc.resolve("Dockerfile"), true);
301302
}
302303
}
304+
305+
// Create Dockerfile.jvm to satisfy Quarkus container build tooling defaults if users choose to use it
306+
if (Files.exists(dockerSrc.resolve("Dockerfile"))) {
307+
Files.copy(dockerSrc.resolve("Dockerfile"), dockerSrc.resolve("Dockerfile.jvm"),
308+
StandardCopyOption.REPLACE_EXISTING);
309+
}
310+
303311
// Quarkus-specific Dockerfiles for native builds
304-
Path docker = Path.of(buildDir).resolve("src/main/docker");
305312
for (String dockerfile : List.of("Dockerfile.native", "Dockerfile.native-micro")) {
306313
InputStream is = ExportQuarkus.class.getClassLoader().getResourceAsStream("quarkus-docker/" + dockerfile);
307314
if (is != null) {
308-
PathUtils.copyFromStream(is, docker.resolve(dockerfile), true);
315+
PathUtils.copyFromStream(is, dockerSrc.resolve(dockerfile), true);
309316
}
310317
}
311318
}

dsl/camel-jbang/camel-jbang-it/src/test/java/org/apache/camel/dsl/jbang/it/ExportITCase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,8 @@ public void testExportWithCustomQuarkusBuild() throws IOException {
151151
public void testGeneratedDockerfilesOnExportQuarkus() {
152152
execute(String.format("export --runtime=quarkus --gav=com.foo:acme:1.0-SNAPSHOT --directory=%s",
153153
mountPoint()));
154+
assertFileInDataFolderExists("src/main/docker/Dockerfile");
154155
assertFileInDataFolderExists("src/main/docker/Dockerfile.jvm");
155-
assertFileInDataFolderExists("src/main/docker/Dockerfile.legacy-jar");
156156
assertFileInDataFolderExists("src/main/docker/Dockerfile.native");
157157
assertFileInDataFolderExists("src/main/docker/Dockerfile.native-micro");
158158
}

0 commit comments

Comments
 (0)