Skip to content

Commit 81fe00a

Browse files
authored
Merge pull request #25 from alenkacz/HostNetworking
Fix getting hostname for HOST networking
2 parents 84ec061 + c72a656 commit 81fe00a

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,10 @@ class ComposeUp extends DefaultTask {
111111
String gateway
112112
Map<String, Object> networkSettings = inspection.NetworkSettings
113113
Map<String, Object> networks = networkSettings.Networks
114-
if (networks) {
114+
if (networks && networks.every { it.key.toLowerCase().equals("host") }) {
115+
gateway = 'localhost'
116+
logger.debug("Will use $gateway as host of $serviceName because it is using HOST network")
117+
} else if (networks) {
115118
Map.Entry<String, Object> firstNetworkPair = networks.find()
116119
gateway = firstNetworkPair.value.Gateway
117120
logger.debug("Will use $gateway (network ${firstNetworkPair.key}) as host of $serviceName")

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,37 @@ class DockerComposePluginTest extends Specification {
223223
''']
224224
}
225225

226+
def "expose localhost as a host for container with HOST networking"() {
227+
def projectDir = new TmpDirTemporaryFileProvider().createTemporaryDirectory("gradle", "projectDir")
228+
new File(projectDir, 'docker-compose.yml') << '''
229+
version: '2'
230+
services:
231+
web:
232+
image: nginx
233+
network_mode: host
234+
ports:
235+
- 80
236+
'''
237+
def project = ProjectBuilder.builder().withProjectDir(projectDir).build()
238+
project.plugins.apply 'java'
239+
project.plugins.apply 'docker-compose'
240+
project.tasks.composeUp.up()
241+
Test test = project.tasks.test as Test
242+
when:
243+
project.dockerCompose.exposeAsEnvironment(test)
244+
project.dockerCompose.exposeAsSystemProperties(test)
245+
then:
246+
test.environment.get('WEB_HOST') == 'localhost'
247+
test.systemProperties.get('web.host') == 'localhost'
248+
cleanup:
249+
project.tasks.composeDown.down()
250+
try {
251+
projectDir.delete()
252+
} catch(ignored) {
253+
projectDir.deleteOnExit()
254+
}
255+
}
256+
226257
def "reads logs of service"() {
227258
def projectDir = new TmpDirTemporaryFileProvider().createTemporaryDirectory("gradle", "projectDir")
228259
new File(projectDir, 'docker-compose.yml') << '''

0 commit comments

Comments
 (0)