@@ -24,7 +24,6 @@ import eu.openanalytics.shinyproxyoperator.Config
2424import eu.openanalytics.shinyproxyoperator.FileManager
2525import io.github.oshai.kotlinlogging.KotlinLogging
2626import kotlinx.coroutines.Dispatchers
27- import kotlinx.coroutines.IO
2827import kotlinx.coroutines.withContext
2928import org.apache.commons.lang3.RandomStringUtils
3029import org.mandas.docker.client.DockerClient
@@ -71,47 +70,51 @@ class RedisConfig(private val dockerClient: DockerClient,
7170
7271 suspend fun reconcile () {
7372 dockerActions.stopAndRemoveNotRunningContainer(containerName)
74- if (dockerActions.getContainerByName(containerName) == null ) {
75- withContext(Dispatchers .IO ) {
76- fileManager.createDirectories(dataDir.resolve(" data" ))
77- }
78- logger.info { " [Redis] Pulling image" }
79- dockerActions.pullImage(redisImage)
73+ if (dockerActions.isContainerRunning(containerName, redisImage)) {
74+ logger.info { " [Redis] Ok" }
75+ return
76+ }
77+ withContext(Dispatchers .IO ) {
78+ fileManager.createDirectories(dataDir.resolve(" data" ))
79+ }
80+ logger.info { " [Redis] Reconciling" }
81+ dockerActions.stopAndRemoveContainer(containerName)
82+ logger.info { " [Redis] Pulling image" }
83+ dockerActions.pullImage(redisImage)
8084
81- withContext(Dispatchers .IO ) {
82- fileManager.writeFile(dataDir.resolve(" redis.conf" ),
83- """ save 60 1
85+ withContext(Dispatchers .IO ) {
86+ fileManager.writeFile(dataDir.resolve(" redis.conf" ),
87+ """ save 60 1
8488 |appendonly yes
8589 |requirepass $redisPassword
8690 |""" .trimMargin())
87- }
91+ }
8892
89- val hostConfig = HostConfig .builder()
90- .networkMode(DockerOrchestrator .SHARED_NETWORK_NAME )
91- .binds(HostConfig .Bind .builder()
92- .from(dataDir.resolve(" data" ).toString())
93- .to(" /data" )
94- .build(),
95- HostConfig .Bind .builder()
96- .from(dataDir.resolve(" redis.conf" ).toString())
97- .to(" /etc/redis.conf" )
98- .build()
99- )
100- .restartPolicy(HostConfig .RestartPolicy .always())
101- .build()
93+ val hostConfig = HostConfig .builder()
94+ .networkMode(DockerOrchestrator .SHARED_NETWORK_NAME )
95+ .binds(HostConfig .Bind .builder()
96+ .from(dataDir.resolve(" data" ).toString())
97+ .to(" /data" )
98+ .build(),
99+ HostConfig .Bind .builder()
100+ .from(dataDir.resolve(" redis.conf" ).toString())
101+ .to(" /etc/redis.conf" )
102+ .build()
103+ )
104+ .restartPolicy(HostConfig .RestartPolicy .always())
105+ .build()
102106
103- val containerConfig = ContainerConfig .builder()
104- .image(redisImage)
105- .hostConfig(hostConfig)
106- .labels(mapOf (" app" to " redis" ))
107- .cmd(listOf (" redis-server" , " /etc/redis.conf" ))
108- .user(dataDirUid.toString())
109- .build()
107+ val containerConfig = ContainerConfig .builder()
108+ .image(redisImage)
109+ .hostConfig(hostConfig)
110+ .labels(mapOf (" app" to " redis" ))
111+ .cmd(listOf (" redis-server" , " /etc/redis.conf" ))
112+ .user(dataDirUid.toString())
113+ .build()
110114
111- logger.info { " [Redis] Creating new container" }
112- val containerId = dockerClient.createContainer(containerConfig, containerName).id()!!
113- dockerClient.startContainer(containerId)
114- }
115+ logger.info { " [Redis] Creating new container" }
116+ val containerId = dockerClient.createContainer(containerConfig, containerName).id()!!
117+ dockerClient.startContainer(containerId)
115118 }
116119
117120 private fun readPasswordFile (path : String ): String? {
0 commit comments