Docker MySQL ошибка подключения

0

У меня приложение работает на контейнере. У меня запущен сервер mysql и возникли проблемы с подключением моего приложения к серверу mysql. Это скриншот ошибки

мой файл docker-compose.yml:

version: '3'

services:

  db:
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=new_password
      - MYSQL_USER=composetest
      - MYSQL_PASSWORD=new_password
      - MYSQL_DATABASE=sample_db
      - MYSQL_HOST=localhost

  web:
    build: .
    command: bash -c "python check_db.py --service-name mysql --ip db --port 3306 &&
                      python manage.py migrate &&
                      python manage.py runserver 0.0.0.0:8000"
    volumes:
      - .:/code
    ports:
      - "8000:8000"
  • 0
    Не могли бы вы предоставить файл Docker-compose?
  • 0
    я загрузил свой файл docker-compose.yml
Показать ещё 2 комментария
Теги:
docker-compose

2 ответа

0

Я хотел бы написать свою докер-композицию, как рев. Нет необходимости устанавливать хост и связывать службу с depend_on

version: '3'

services:

  db:
    image: mysql
    environment:
      - MYSQL_ROOT_PASSWORD=new_password
      - MYSQL_USER=composetest
      - MYSQL_PASSWORD=new_password
      - MYSQL_DATABASE=sample_db

  web:
    build: .
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

Я удалил команды из docker-compose, которые вы можете добавить в сценарий bash, и добавьте для запуска в точке входа. Скрипт будет выглядеть примерно так. Я делаю cd, чтобы перейти в соответствующий каталог, где установлены приложения.

run.sh

#!/bin/sh

#getting into the directory where the command should run.
cd /app

python check_db.py --service-name mysql --ip db --port 3306
python manage.py migrate 
python manage.py runserver 0.0.0.0:8000

В разделе настройки базы данных, в котором вы задаете имя хоста, поместите имя службы в свой случай, db.

Это в целом то, что я делаю в развертывании приложения laravel, должно быть одинаковым в вашем случае

0

Вы забыли связать веб-контейнер с контейнером db.

Добавьте в веб-конфигурацию следующее: все должно быть:

links:
   - db
  • 0
    я попробовал, но столкнулся с той же проблемой

Ещё вопросы

Сообщество Overcoder
Наверх
Меню