«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Использование MySQL в контейнере Docker для ваших проектов

Использование MySQL в контейнере Docker для ваших проектов

Опубликовано 18 августа 2024 г.
Просматривать:631

Using MySQL in a Docker Container for your Projects

Я твердо верю в необходимость поддерживать чистоту своей хост-системы. И контейнеры Docker — идеальное решение этой проблемы. Допустим, вы работаете над приложением React с серверной частью Node/Express и сервером MySQL для нужд вашей БД. Обычно вы устанавливаете mysql в своей хост-системе, создаете базу данных, создаете пользователя с паролем и предоставляете ему права на работу с этой базой данных.

Вместо того, чтобы тратить время на настройку каждый раз для каждого отдельного проекта, я просто использую образ Docker для создания своего сервера базы данных MySQL, который будет готов, запущен и запущен через несколько секунд со всеми необходимыми настройками, которые я хотел бы когда-нибудь понадобится.

Поверьте мне, как только вы выясните свой рабочий процесс, используя этот маршрут, вы никогда не вернетесь к старым путям. Итак, вот как я это делаю, очень просто и элементарно.

Если у вас есть некоторый опыт работы с Docker и вы хотите пропустить это руководство и сразу перейти к версии TLDR, этот Gist будет намного быстрее.

Что нам понадобится?

Чтобы использовать Docker, нам нужен Docker, да! Я не буду здесь вдаваться в подробности установки Docker. Если вам не нравится CLI или вы используете Windows/MacOS, выберите Docker Desktop, он незаметно сделает за вас всю тяжелую работу.

Пользователи Linux также могут установить Docker Engine с плагином Docker Compose или Docker Desktop, если вы этого не чувствуете.

Обычно вам не нужна учетная запись в Docker Hub для загрузки общедоступных изображений, таких как официальный образ MySQL, который мы будем использовать.

Хорошо, что теперь?

Это можно сделать двумя способами.

Использование Docker Run (не рекомендуется)

Чтобы иметь возможность напрямую запускать контейнер с помощью команды docker run, вам необходимо сначала загрузить образ MySQL в вашу систему. Чтобы загрузить образ в свою систему, просто используйте эту команду:

docker pull mysql

Примечание: если вам не нужна конкретная версия MySQL, эта команда загрузит самую последнюю версию (тот, у которого есть последний тег). При необходимости вы можете изучить дополнительные теги и версии в Docker Hub.

После завершения загрузки Docker вы увидите загруженное изображение следующим образом:

docker image ls

Теперь, чтобы запустить контейнер, вам нужно добавить множество флагов с помощью команды docker run. Вы можете перейти по этой ссылке, чтобы проверить все имеющиеся у вас варианты. Вам также необходимо запомнить все флаги, которые необходимо добавить, поскольку отсутствие некоторых из них может привести к возникновению ошибок или запуску неработоспособного контейнера.

Кроме того, каждый раз, когда вы захотите запустить контейнер, вам придется либо выуживать эту длинную команду из истории терминала, либо набирать ее заново. В этом нет никакого смысла.

Вот почему я НЕ РЕКОМЕНДУЮ этот подход. Есть способ получше.

Докер Составление

Мы создадим файл Docker Compose, который сообщит Docker, что нам нужно при запуске контейнера. Как только все будет записано в файле, запуск контейнера станет проще простого.

Примечание. Вы можете создать файл компоновки с любым именем. Если вы используете свое собственное имя или храните файл создания в других папках, вам нужно будет указать флаг -f, чтобы он работал. Альтернативно, если вы запускаете команду из той же папки, что и ваш файл, вы можете назвать файл docker-compose.yaml.

Файл Docker Compose представляет собой файл YAML. Наш будет выглядеть так:

# This Docker Compose YAML deploys a MySQL database
services:
  container-name:

    image: mysql # Official MySQL image from Docker Hub
    restart: always

    environment:
      # Note - Root password is mandatory for the container to run and grant privileges to our User.
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

      MYSQL_DATABASE: ${MYSQL_DATABASE} # Same name as used in your project

      # DB User Details
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}

    ports:
      # Adjust this port as per your needs -> :
      - 3308:3306 # DB is available at localhost:3308 on the host.

    volumes:
      - ./volumes/db-mnt:/var/lib/mysql

Этот файл также доступен в Gist, упомянутом вначале.

Важно знать

  1. Сопоставление портов: первый порт — это порт хоста (вашей системы), который сопоставляется со вторым портом (портом внутри Docker-контейнера). Это означает, что в приведенном выше примере вы можете получить доступ к базе данных по адресу localhost:3308. Если вы не знаете, что делаете, оставьте второй порт 3306. Это порт по умолчанию для MySQL.
  2. Монтирование привязки тома: мы подключаем локальный том к контейнеру, чтобы данные сохранялись внутри базы данных. Это упрощает резервное копирование и перемещение при необходимости. Вы также можете позволить Docker управлять собственным томом и периодически создавать резервные копии в вашей хост-системе. #### Файл среды Чтобы предоставить необходимые учетные данные Docker при создании контейнера, мы создадим файл .env, точно так же, как мы это делаем в наших приложениях React или Backend.

Вы можете создать этот файл в той же папке, где находится ваш файл создания, или вы можете создать его где угодно, но вам нужно будет указать путь при вызове docker-compose.

# Content of the Environment Variables file
MYSQL_ROOT_PASSWORD=rootpassword
MYSQL_DATABASE=nameofdatabase
MYSQL_USER=dbusername
MYSQL_PASSWORD=dbuserpassword

Как только все это будет готово, мы сможем просто использовать одну небольшую команду, и наша база данных будет готова и будет ждать нас.

docker-compose up -d

Теперь вы готовы подключиться к базе данных, используя предпочитаемый вами способ.

И поскольку мы настроили наши контейнеры для запуска из файла компоновки, вы можете безопасно создать резервную копию в системе git в своем репозитории. Просто убедитесь, что вы .git игнорируете файл .env.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/nyukeit/using-mysql-in-a-docker-container-for-your-projects-4ham?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected] удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3