TransWikia.com

Docker - error al iniciar contenedor

Stack Overflow en español Asked on November 30, 2020

Tengo dos contenedores para un proyecto de laravel uno con mysql y otro con apache, al arrancar el de mysql me da error.

Lo primero que hago es parar todos los contenedores con el comando "docker-compose down" y por pantalla me sale esto

Stopping backend-forms_app_1 ... done
Removing backend-forms_app_1 ... done
Removing database                 ... done
Removing network backend-bringforms_default

Y si realizo un "docker-compose

Creating network "backend-forms_default" with the default driver
Creating database ...
Creating database                 ... error
WARNING: Host is already in use by another container

Creating backend-forms_app_1 ... done

ERROR: for db  Cannot start service db: driver failed programming external connectivity on endpoint database (ee9216527529596af152a5e210b6f8a90e46badd3e29bb8f4c9e024b0da1cc2e): Bind for 0.0.0.0:3307 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.

Fichero docker compose

version: '3.7'
services:
  app:
    build:
      context: .
      dockerfile: .docker/Dockerfile
    image: laravelapp
    command: php artisan serve --host 0.0.0.0 --port=8080
    ports:
      - 8080:8080
    environment:
      - SQL_HOST=db
    volumes:
      - ./:/var/www/html
  db:
    image: mysql:5.7
    container_name: database
    restart: always
    ports:
      - 3307:3306
    environment:
      - MYSQL_DATABASE=laraapp_db
      - MYSQL_ALLOW_EMPTY_PASSWORD=1
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_HOST=
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
    mysql_data:

One Answer

El problema que tienes es que se esta ejecutando primero la imagen app y luego la imagen de base de datos; la solucion para esto es sencilla debes agregar a la construccion de la imagen app que dependa de la ejecucion de la base de datos algo como depends:db el ejemplo completo a continuacion:

version: '3.7'
services:
  app:
    depends_on: 
      - db         
    build:
      context: .
      dockerfile: .docker/Dockerfile
    image: laravelapp
    command: php artisan serve --host 0.0.0.0 --port=8080
    ports:
      - 8080:8080
    environment:
      - SQL_HOST=db
    volumes:
      - ./:/var/www/html
  db:
    image: mysql:5.7
    container_name: database
    restart: always
    ports:
      - 3307:3306
    environment:
      - MYSQL_DATABASE=laraapp_db
      - MYSQL_ALLOW_EMPTY_PASSWORD=1
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_HOST=
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
    mysql_data:

Te invito a leer mas en la Documentación

Correct answer by JackNavaRow on November 30, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP