1

El tema es el siguiente. Estoy empezando un proyecto personal desde 0 y estoy usando la última version de Laravel 7.16.1 y para la base de datos Mysql 8.0 decidi trabajar con Docker para poder gestionar la base de datos y el servicio el server.

actualmente tengo mi docker-compose.yml de la siguiente forma:

services :
  db:
    image: mysql:8.0
    container_name: db-confort
    restart: always
    ports:
       - 3306:3306
    environment:
      MYSQL_ROOT_USER: 'root'
      MYSQL_ROOT_PASSWORD: 'root'
      MYSQL_DATABASE: 'confort'
      MYSQL_USER: 'confort'
      MYSQL_PASSWORD: 'confort'
    networks:
      - confort-network
  confort-app:
    build:
      context: .docker
      dockerfile: Dockerfile
    container_name: confort
    ports:
       - 80:80
    volumes:
      - confort-deco:
        type: volume
        source: ./
        target: /var/www/html
    depends_on:
      - db
    networks:
      - confort-network
volumes:
   confort-deco:
networks:
  confort-network :

Hasta aqui todo bien, me puedo conectar a la base de datos desde phpstorm con la integracion de la base de datos.

El PROBLEMA esta cuando ejecuto (Desde el container de mi app) el siguiente comando php artisan migrate:install y de esta forma poder levantar mi tabla de migraciones.

Pero siempre me arroja el siguiente error SQLSTATE[HY000] [2002] Connection timed out (SQL: create table `migrations` (`id` int unsigned not null auto_increment primary key, `migration` varchar(255) not null, `batch` int not null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')

Nose que estoy haciendo mal, es muy simple. he leido 2 millones de veces que el error esta con el caching_sha2_password con el mysql v 8.*. Para esto TODO el mundo dice ejecuta el siguiente comando.

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES; 

Lo he ejecutado en mis dos usuarios:

  • root
  • confort

y el resultado de las dos consultas es EXITOSO. ( Para ejecutar estas dos consulta lo hago por el phpstorm )

Desde la terminal de mi ubuntu 18.04 ejecuto el siguiente comando. mysql -u confort -p confort --protocol=tcp

Entro perfectamente. Pero ejecuto el mismo comando desde mi app container y no hay resultado alguno.

sin embargo desde mi app container hago un ping al container de mi base de datos y se comunica sin ningun problema!

Realice una pequeña prueba en donde use la version de mysql:5.7 en mi docker-compose y no me ocurre este problema funciona perfectamente.... ¿Qué estoy haciendo mal?

1 respuesta 1

0

Despues de un muy largo sufrimiento pude encontrar la solución a php artisan migrate Incorpore estas lineas a mi Dockerfile (Imagen personal) y ahora me funciona perfectame la app

RUN wget -qO - https://packages.sury.org/php/apt.gpg \
    && echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php7.4.list \
    && apt-get update \
    && apt-get upgrade -y
1
  • Probe levantando mi imagen en otro ordenador y el problema persiste. Esta no es la solucion :( Commented el 4 jul. 2020 a las 21:00

¿No es la respuesta que buscas? Examina otras preguntas con la etiqueta o formula tu propia pregunta.