Задать вопрос

Почему дропается база данных?

Купил небольшой сервер vds для практики и обучения.
10 GB SSD
1 CPU
1 GB RAM
OS Debian
Для практики достаточно.
Собрал проект через docker-compose
Поднял там отдельные контейнеры с nginx, php и mysql.
Всё работает корректно за тем исключением, что уже пару раз происходила ситуация, что база данных удалялась. Сам контейнер работает, а вот базу приходится пересоздавать.
Вот мой docker-compose.yml
version: '3.8'

services:
  nginx:
    image: nginx:latest
    container_name: yii2-nginx
    ports:
      - "8050:80"
    volumes:
      - .:/var/www/html
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
      - mysql
    networks:
      - app-network

  php:
    build:
      context: ./docker/php
      dockerfile: Dockerfile
    container_name: yii2-php
    volumes:
      - .:/var/www/html
    networks:
      - app-network

  mysql:
    image: mysql:8.0
    container_name: yii2-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - app-network

networks:
  app-network:

volumes:
  mysql_data:


Подскажите, какие причины такого поведения могут быть? Возможно, недостаточно оперативной памяти и что-то крашится? В общем, в какую сторону смотреть?
  • Вопрос задан
  • 2892 просмотра
Подписаться 4 Простой 7 комментариев
Решения вопроса 3
Tony-Sol
@Tony-Sol
Замаунти базу не в volume, а напрямую на диск:
mysql:
    ...
    volumes:
      - ./data/mysql:/var/lib/mysql

(ну или любой другой удобный путь вместо ./data/mysql)
Так база не будет зависеть от наличия/состояния volume'ов
Ответ написан
Комментировать
@KirillinED
Как вариант ты мог использовать команду docker volume rm или docker system prune, если освобождал место на диске.
Ответ написан
Комментировать
siferdj
@siferdj
Люблю учиться
Привет. Предположу, что у тебя не указан путь до хостового volume и он может меняться. Т.е. возможно база лежит на диске, но уже на не используемом старом месте.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@CrazyHackGUT
А пароль нормальный? MySQL зачем-то экспозится на все интерфейсы, на него можно с внешки зайти.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Так вы волюм грохаете же сами всегда
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы