Skip to content

Commit d57bed7

Browse files
author
Marcus Linke
committed
Fix issue # 171 with nested ENV variables in Dockerfile
1 parent 749a9af commit d57bed7

File tree

4 files changed

+24
-2
lines changed

4 files changed

+24
-2
lines changed

src/main/java/com/github/dockerjava/core/dockerfile/DockerfileStatement.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ protected String filterForEnvironmentVars(Map<String, String> environmentMap,
3838

3939
// handle: $VARIABLE case
4040
currentResourceContent = currentResourceContent.replaceAll(
41-
"\\$" + variable, replacementValue);
41+
"\\$" + variable, Matcher.quoteReplacement(replacementValue));
4242

4343
// handle ${VARIABLE} case
4444
currentResourceContent = currentResourceContent.replaceAll(
45-
"\\$\\{" + variable + "\\}", replacementValue);
45+
"\\$\\{" + variable + "\\}", Matcher.quoteReplacement(replacementValue));
4646

4747
}
4848

src/test/java/com/github/dockerjava/core/command/BuildImageCmdImplTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,15 @@ public void testDockerBuilderAddFolder() throws DockerException,
111111
String response = dockerfileBuild(baseDir);
112112
assertThat(response, containsString("Successfully executed testAddFolder.sh"));
113113
}
114+
115+
@Test
116+
public void testDockerBuilderEnv() throws DockerException,
117+
IOException {
118+
File baseDir = new File(Thread.currentThread().getContextClassLoader()
119+
.getResource("testEnv").getFile());
120+
String response = dockerfileBuild(baseDir);
121+
assertThat(response, containsString("Successfully executed testrun.sh"));
122+
}
114123

115124

116125
private String dockerfileBuild(File baseDir) {
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
FROM ubuntu:latest
2+
3+
ENV varA ./subFolder
4+
ENV varB $varA/testrun.sh
5+
6+
ADD $varB /tmp/
7+
8+
RUN cp /tmp/testrun.sh /usr/local/bin/ && chmod +x /usr/local/bin/testrun.sh
9+
10+
CMD ["testrun.sh"]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/sh
2+
3+
echo "Successfully executed testrun.sh"

0 commit comments

Comments
 (0)