Skip to content

Commit 6dc3c75

Browse files
committed
Fix #34914: allow to disable ICC
1 parent 357c1bb commit 6dc3c75

2 files changed

Lines changed: 12 additions & 9 deletions

File tree

src/main/kotlin/eu/openanalytics/shinyproxyoperator/impl/docker/DockerActions.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,12 @@ class DockerActions(private val dockerClient: DockerClient) {
4747
}
4848
}
4949

50-
fun createNetwork(name: String) {
51-
dockerClient.createNetwork(
52-
NetworkConfig.builder()
53-
.name(name)
54-
.build()
55-
)
50+
fun createNetwork(name: String, disableICC: Boolean) {
51+
val builder = NetworkConfig.builder().name(name)
52+
if (disableICC) {
53+
builder.addOption("com.docker.network.bridge.enable_icc", "false")
54+
}
55+
dockerClient.createNetwork(builder.build())
5656
}
5757

5858
fun getContainerByName(name: String): Container? {

src/main/kotlin/eu/openanalytics/shinyproxyoperator/impl/docker/DockerOrchestrator.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class DockerOrchestrator(channel: Channel<ShinyProxyEvent>,
6565
private val inputDir: Path) : IOrchestrator {
6666

6767
private val dockerGID: Int = config.readConfigValue(null, "SPO_DOCKER_GID") { it.toInt() }
68+
private val disableICC: Boolean = config.readConfigValue(false, "SPO_DISABLE_ICC") { it.toBoolean() }
6869
private val state = mutableMapOf<String, ShinyProxyStatus>()
6970

7071
private val logger = KotlinLogging.logger { }
@@ -163,7 +164,7 @@ class DockerOrchestrator(channel: Channel<ShinyProxyEvent>,
163164
val networkName = "sp-network-${shinyProxy.realmId}"
164165
if (!dockerActions.networkExists(networkName)) {
165166
logger.info { "${logPrefix(shinyProxyInstance)} [Docker] Creating network" }
166-
dockerActions.createNetwork(networkName)
167+
dockerActions.createNetwork(networkName, disableICC)
167168
}
168169

169170
logger.info { "${logPrefix(shinyProxyInstance)} [Docker] Pulling image" }
@@ -213,7 +214,7 @@ class DockerOrchestrator(channel: Channel<ShinyProxyEvent>,
213214
copyTemplates(shinyProxy, dir)
214215

215216
val hostConfigBuilder = HostConfig.builder()
216-
.networkMode(networkName)
217+
.networkMode(SHARED_NETWORK_NAME)
217218
.binds(
218219
HostConfig.Bind.builder()
219220
.from("/var/run/docker.sock")
@@ -267,7 +268,9 @@ class DockerOrchestrator(channel: Channel<ShinyProxyEvent>,
267268

268269
logger.info { "${logPrefix(shinyProxyInstance)} [Docker] Creating new container" }
269270
val containerId = dockerClient.createContainer(containerConfig, containerName).id()
270-
dockerClient.connectToNetwork(containerId, SHARED_NETWORK_NAME)
271+
if (!disableICC) {
272+
dockerClient.connectToNetwork(containerId, networkName)
273+
}
271274
dockerClient.startContainer(containerId)
272275
}
273276
shinyProxyReadyChecker.add(shinyProxyInstance)

0 commit comments

Comments
 (0)