Quiero construir un clúster de Cassandra con Docker. La documentación ya te dice cómo hacerlo, así que este no es el problema que tengo.
Sin embargo, actualmente estoy usando Docker en Windows 10 y obviamente no puedo ejecutar el comando anidado en docker run --name some-cassandra2 -d -e CASSANDRA_SEEDS="$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' some-cassandra)" cassandra:tag que da como resultado una lista de semillas vacía para el contenedor.
¿Cómo puedo anidar un comando como este en Windows o, si esto no es posible, obtener una solución para esto?
Logré solucionarlo gracias a un docker-compose.yml de Jason Giedymin . Debería funcionar tanto en v1 como en v2 de docker-compose. Al hacerlo de esta manera, solo deja que docker haga la vinculación desde el principio y le cuente a cassandras sobre otras semillas con la variable de entorno que el contenedor ya le brinda.
La parte sleep 30 es bastante inteligente y se asegura de que el segundo contenedor no intente conectarse en un contenedor que aún no está completamente lleno.
Sin embargo, una cosa que recomendaría es usar external_links en lugar de links . De esta manera, otros contenedores no dependen de que todos los contenedores de Cassandra estén listos para comenzar/trabajar. Esto anularía el propósito de una base de datos distribuida.
Todavía no sé cómo anidar los comandos cmd de Windows entre sí, por lo que aún estaría agradecido por algunos consejos.