Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

365
Vistas
Se perdió la conexión con el servidor MySQL al crear una base de datos desde un script en un contenedor Docker

Estoy configurando un script para configurar entornos Docker para máquinas locales de desarrolladores. Una parte específica del script consiste en crear un contenedor temporal con un volumen local para configurar la base de datos que usaré en el próximo paso. este es el código usado en el script:

docker run -d --name mysql_temp -v ~/dev/mysql:/var/lib/mysql/data -e MYSQL_ROOT_PASSWORD=test -p 3306:3306 centos/mysql-57-centos7:latest

el siguiente paso en el script es esta línea:

mysql -u root -h 127.0.0.1 --protocol=tcp --password=test -e "CREATE DATABASE db_test;"

entonces, el script me devuelve este error:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2


Curiosamente, si fuerzo la salida con el comando exit después del primer comando y ejecuto el segundo a mano, directamente en la terminal, funciona y me crea la base de datos.

¿Alguna idea de qué está pasando esto?

gracias de antemano,

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En su secuencia de comandos, cuando se ejecuta la primera línea, crea el contenedor docker. Pero lleva tiempo inicializar el servidor mysql en el contenedor. El script ejecuta la segunda línea sin esperar a que mysql se inicialice. Por lo tanto, no se puede conectar.

Supongo que ha escrito un script de shell. Pruebe el siguiente script.

 docker run -d --name mysql_temp -v ~/dev/mysql:/var/lib/mysql/data -e MYSQL_ROOT_PASSWORD=test -p 3306:3306 centos/mysql-57-centos7:latest sleep 10 mysql -u root -h localhost --protocol=tcp -ptest -e "CREATE DATABASE db_test;"

Tenga en cuenta que la segunda línea tiene sleep 10. Básicamente, esto creará un retraso de 10 segundos antes de ejecutar el siguiente comando. Intente variar el tiempo de sueño a uno más alto si aún no funciona.

También cambie 127.0.0.1 a localhost y --password=test a -ptest

Nota: Dijiste que si sales del script y ejecutas el comando mysql manualmente, funciona. Eso es porque cuando intentaste ejecutarlo manualmente, el contenedor ya había inicializado mysql. Intente ejecutar el comando docker run en una ventana de terminal. Una vez que se inicia el contenedor, intente ejecutar el comando mysql inmediatamente en otra ventana de terminal para ver si funciona tan rápido como esperaba.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda