Контейнер докеров mysql завершился с кодом 1

Я хочу запустить mysql в Windows с помощью контейнера докеров, когда я пытаюсь использовать команду docker-compose up в файле docker-compose, это результат.

> D:\dockerfiles>docker-compose up
db_1  | Initializing database
db_1  | 2018-10-08T09:00:29.024081Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
db_1  | 2018-10-08T09:00:29.024224Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000)
db_1  | 2018-10-08T09:00:29.024512Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
db_1  | 2018-10-08T09:00:29.028590Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
db_1  | 2018-10-08T09:00:29.028673Z 0 [ERROR] Aborting
db_1  |
dockerfiles_db_1 exited with code 1

и это мой docker-compose.yml

version: '3.7'

services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: pass
      MYSQL_DATABASE: star
      MYSQL_USER: user
      MYSQL_PASSWORD: pass

обновление файла docker compose

version: '3.7'

services:
  mysqldb:
    image: mysql:5.7
    container_name: mysql_con1
    command: --default-authentication-plugin=mysql_native_password
    command: --disable-partition-engine-check
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: pass
      MYSQL_DATABASE: star
      MYSQL_USER: user
      MYSQL_PASSWORD: pass
    volumes:
      - "./:/var/lib/mysql"
    networks:
      - samplenet
networks:
  samplenet:
    driver: nat

Добро пожаловать в SO. Пожалуйста, убедитесь, что кодовые блоки окружены { и } для удобства чтения.

gravetii 08.10.2018 11:14

См. github.com/docker-library/mysql/issues/290.

Frank AK 08.10.2018 11:16

Доза решения GitHub не работает

Mohamed Ahmed Sayed 08.10.2018 11:25

Проблема с - "./:/var/lib/mysql" в том, что текущий каталог (./) не пуст. Он содержит файл docker-compose.

Dhirendra 08.10.2018 19:04

я меняю '"./:/var/lib/mysql"' на "./data" и та же ошибка

Mohamed Ahmed Sayed 08.10.2018 19:40
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
9
5
17 926
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

В каталоге /var/lib/mysql есть несколько файлов. Удалите все из этого каталога. Или настоятельно рекомендуется использовать тома из docker-compose.yml.

volumes:
  - /my/own/datadir:/var/lib/mysql

Обновлять: Я тестировал следующий файл набора, он работал нормально, без ошибок.

version: '3.7'

services:
  db:
    image: mysql:5.7
    restart: always
    volumes:
    - ./data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: pass
      MYSQL_DATABASE: star
      MYSQL_USER: user
      MYSQL_PASSWORD: pass

извините за мою небольшую информацию, но что такое / my / own / datadir и / var / lib / mysql

Mohamed Ahmed Sayed 08.10.2018 11:42
/my/own/datadir - это путь, по которому вы хотите хранить файлы базы данных на вашем хост-компьютере, а /var/lib/mysql - это путь, по которому mysql хранит их в контейнере.
Dhirendra 08.10.2018 13:27

Но mysql Dockerfile добавляет точку монтирования VOLUME /var/lib/mysql по умолчанию, которая указывает контейнеру mysql хранить файлы базы данных в каталоге /var/lib/mysql на хост-машине.

Dhirendra 08.10.2018 13:33

обязательно удалите существующие отказавшие контейнеры. можно использовать docker-compose down.

Dhirendra 08.10.2018 16:29

Я делаю это, а также удаляю старые тома

Mohamed Ahmed Sayed 08.10.2018 16:33

Я только что заметил, что вы используете машину Windows. Кажется, что монтирование тома не работает, докер все еще использует путь монтирования по умолчанию. Проверить это github.com/docker/compose/issues/4303.

Dhirendra 08.10.2018 20:40

спасибо за ответы, но эта ошибка появляется ERROR: for test8_db_1 Cannot create container for service db: invalid volume specification: '/d/test8/data:/var/lib/mysql:rw' ERROR: for db Cannot create container for service db: invalid volume specification: '/d/test8/data:/var/lib/mysql:rw' ERROR: Encountered errors while bringing up the project.

Mohamed Ahmed Sayed 09.10.2018 13:27

См. Документацию по докеру, чтобы узнать, как указать тома в среде Windows.

Dhirendra 09.10.2018 22:49

У меня такое же поведение, определяющее restart = always, если я удалю его, все прошло нормально, а позже я запускаю команду

docker update --restart=always {{ID OF CONTAINER}}

Что заставляет его перезагружаться всегда. Надеюсь, это тебе поможет.

Обновить громкость в docker-compose.yml

volumes:
  - /my/own/datadir:/var/lib/mysql

Обновление: этот файл компоновки, он работал нормально.

mysql:
    image: mysql:5.7.22
    container_name: mysql
    restart: unless-stopped
    tty: true
    ports:
      - "3307:3306"
    volumes:
      - /my/own/datadir:/var/lib/mysql
    environment:
      MYSQL_USERNAME: "root"
      MYSQL_PASSWORD: "root"
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_DATABASE: test

Для тех, кто запускал контейнер с помощью команды docker run и добавил флаг --detach|-d; Удалите и перезапустите контейнер без флага -d.

Это должно предоставить сообщение об ошибке, объясняющее причину сбоя.

Другие вопросы по теме