Skip to content

Commit bbf84be

Browse files
authored
Merge pull request #27 from pzbitskiy/master
Fixes #26: Ability to pass env to docker-compose
2 parents 81fe00a + cca511b commit bbf84be

File tree

4 files changed

+38
-0
lines changed

4 files changed

+38
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ dockerCompose {
4242
// removeContainers = false
4343
// removeImages = "None" // Other accepted values are: "All" and "Local"
4444
// removeVolumes = false
45+
// environment.put 'BACKEND_ADDRESS', '192.168.1.100' // Pass environment variable to 'docker-compose' for substitution in compose file
4546
}
4647
4748
test.doFirst {

src/main/groovy/com/avast/gradle/dockercompose/ComposeExtension.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ class ComposeExtension {
2626
RemoveImages removeImages = RemoveImages.None
2727
boolean removeVolumes = true
2828

29+
Map<String, Object> environment = new HashMap<String, Object>(System.getenv());
30+
2931
ComposeExtension(Project project, ComposeUp upTask, ComposeDown downTask) {
3032
this.project = project
3133
this.downTask = downTask

src/main/groovy/com/avast/gradle/dockercompose/tasks/ComposeUp.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,12 @@ class ComposeUp extends DefaultTask {
3131
void up() {
3232
if (extension.buildBeforeUp) {
3333
project.exec { ExecSpec e ->
34+
e.environment = extension.environment
3435
e.commandLine extension.composeCommand('build')
3536
}
3637
}
3738
project.exec { ExecSpec e ->
39+
e.environment = extension.environment
3840
e.commandLine extension.composeCommand('up', '-d')
3941
}
4042
try {

src/test/groovy/com/avast/gradle/dockercompose/DockerComposePluginTest.groovy

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,4 +275,37 @@ class DockerComposePluginTest extends Specification {
275275
projectDir.deleteOnExit()
276276
}
277277
}
278+
279+
def "docker-compose substitutes environment variables"() {
280+
def projectDir = new TmpDirTemporaryFileProvider().createTemporaryDirectory("gradle", "projectDir")
281+
new File(projectDir, 'docker-compose.yml') << '''
282+
web:
283+
image: nginx
284+
ports:
285+
- $MY_WEB_PORT
286+
'''
287+
def project = ProjectBuilder.builder().withProjectDir(projectDir).build()
288+
project.plugins.apply 'docker-compose'
289+
def extension = (ComposeExtension) project.extensions.findByName('dockerCompose')
290+
project.tasks.create('integrationTest').doLast {
291+
ServiceInfo webInfo = project.dockerCompose.servicesInfos.web
292+
assert webInfo.ports.containsKey(80)
293+
}
294+
when:
295+
extension.useComposeFiles = ['docker-compose.yml']
296+
extension.environment.put 'MY_WEB_PORT', 80
297+
extension.waitForTcpPorts = false // checked in assert
298+
project.tasks.composeUp.up()
299+
project.tasks.integrationTest.execute()
300+
then:
301+
noExceptionThrown()
302+
cleanup:
303+
project.tasks.composeDown.down()
304+
try {
305+
projectDir.delete()
306+
} catch(ignored) {
307+
projectDir.deleteOnExit()
308+
}
309+
}
310+
278311
}

0 commit comments

Comments
 (0)