En mi servidor AWS ec2 tengo instalado docker 1.9.1 . En una imagen test_image basada en ubuntu:trusty , he intentado configurar la arquitectura LEMP (Linux, Nginx, MySQL, PHP).
El siguiente es el comando docker que he usado para iniciar mi contenedor:
docker run --name test_1 -d -p 80:80 -p 3306:3306 test_image /bin/sh -c "while true; do echo daemonized docker container; sleep 5000; done" He expuesto los puertos 80 y 3306 a la interfaz de red del host y también he permitido que el grupo de seguridad de AWS permita conexiones entrantes a estos puertos. El tipo de conexión en el grupo de seguridad es: MYSQL/Aurora y el protocolo es: TCP (sé que no es muy seguro, es solo para la implementación inicial. La configuración de producción será diferente)
Seguí este tutorial de DigitalOcean: https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04
Después de instalar Nginx e iniciarlo, puedo probarlo en el navegador a través de la IP pública de ec2, es decir, http://xxx.xxx.xxx.xxx muestra la página de bienvenida predeterminada de nginx.
Mientras instalaba MySQL, seguí los siguientes comandos en el contenedor acoplable:
apt-get install mysql-server mysql_install_db /etc/init.d/mysql start mysql_secure_installation Le di una contraseña a mi usuario root y durante mysql_secure_installation el acceso remoto al usuario root.
El comando mysql -u root -p desde el interior del contenedor me conecta a la base de datos mysql pero no desde fuera del contenedor.
También desde mi máquina local: probé con mysql-client: mysql -h xxx.xxx.xxx.xxx -u root -p
Recibí el siguiente error: ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (111)
y también a través de mysql workbench pero todavía no puedo conectarme a mysql db.
¿Qué estoy haciendo mal?
En el my.cnf de mysql de su host, establezca la dirección de enlace en 0.0.0.0 para que mysql escuche en todas las interfaces de red
bind-address = 0.0.0.0La configuración predeterminada es:
# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1