Поиск
Показаны результаты для тегов 'статья'.
Найдено 2 результата
-
безопасность Памятка по безопасности VPS на серверах Ubuntu и Debian
TrustMe опубликовал тема в Рекомендации
Друзья! Сегодня хотел бы предоставить вниманию, не теряющую актуальность, базовую настройку. Данная статья актуальна в первую очередь для Ubuntu. Во вторую для Debian. Введение в безопасность VPS: Объяснение важности безопасности VPS и основных угроз, которые могут возникнуть при использовании серверов Ubuntu и Debian. Обновление системы: Подробное руководство по обновлению системы для обеспечения ее актуальности и защиты от известных уязвимостей. Настройка брандмауэра: Руководство по настройке брандмауэра для ограничения доступа к определенным портам и службам. Смена стандартных портов: это еще один способ усилить безопасность вашего сервера. Хакеры часто сканируют наиболее распространенные порты (например, 22 для SSH), поэтому изменение портов на нестандартные может помочь уменьшить риск атак. Использование SSH ключей: Объяснение преимуществ использования SSH ключей для аутентификации, а также шаги по их созданию и установке. Настройка Fail2Ban: Руководство по настройке Fail2Ban для автоматической блокировки IP-адресов, которые пытаются взломать систему. Резервное копирование данных: Важность регулярного резервного копирования данных и руководство по его настройке. Заключение и дополнительные рекомендации: Обобщение информации, представленной в статье, и дополнительные рекомендации по обеспечению безопасности VPS. 1. Введение в безопасность VPS Виртуальные частные серверы (VPS) стали неотъемлемой частью современного интернет-пространства. Они предоставляют пользователям гибкость и контроль, которые трудно достичь с общим хостингом. Однако вместе с этими преимуществами приходит и ответственность за обеспечение безопасности вашего VPS. Безопасность VPS - это не что-то, что можно взять и забыть. Это постоянный процесс, который требует регулярного обслуживания и обновления. Несмотря на то, что Ubuntu и Debian являются одними из самых безопасных операционных систем, они не являются неприступными. Все системы подвержены угрозам, и ваша задача - минимизировать риск. Существуют различные типы угроз безопасности, которые могут возникнуть при использовании серверов Ubuntu и Debian. Вот некоторые из них: Вредоносное ПО: Это может включать в себя вирусы, черви, трояны и другие виды вредоносного ПО, которые могут повредить вашу систему или использовать ее для атак на другие системы. Атаки DDoS: Это атаки, которые направлены на перегрузку вашего сервера большим количеством запросов, что может привести к его отказу. Атаки с помощью подбора паролей: Это атаки, при которых злоумышленники пытаются угадать ваши пароли для получения доступа к вашему серверу. Уязвимости в программном обеспечении: Это уязвимости в программном обеспечении, которое вы используете на вашем сервере, которые могут быть использованы злоумышленниками для получения несанкционированного доступа. Важно понимать эти угрозы и принимать меры для их предотвращения. В следующих разделах мы рассмотрим, как вы можете обеспечить безопасность вашего VPS на серверах Ubuntu и Debian. 2. Обновление системы Одним из самых важных шагов в обеспечении безопасности вашего VPS является регулярное обновление вашей системы. Обновления часто включают в себя исправления уязвимостей, которые могут быть использованы злоумышленниками для атаки на вашу систему. Вот как вы можете обновить свою систему на серверах Ubuntu и Debian: Обновление списка пакетов: Прежде всего, вам нужно обновить список пакетов в вашей системе. Это можно сделать с помощью команды sudo apt update. Эта команда обновит список доступных пакетов и их версий. Обновление установленных пакетов: После обновления списка пакетов вы можете обновить все установленные пакеты с помощью команды sudo apt upgrade. Эта команда обновит все установленные пакеты до последних версий. Удаление неиспользуемых пакетов: После обновления пакетов рекомендуется удалить неиспользуемые пакеты, которые больше не нужны. Это можно сделать с помощью команды sudo apt autoremove. Обновление ядра системы: В некоторых случаях может потребоваться обновление ядра системы. Это можно сделать с помощью команды sudo apt dist-upgrade. После выполнения этой команды может потребоваться перезагрузка сервера. Вот пример того, как выглядят эти команды в терминале: sudo apt update sudo apt upgrade sudo apt autoremove sudo apt dist-upgrade Помните, что обновление системы - это важный шаг в обеспечении безопасности вашего сервера. Регулярное выполнение этих шагов поможет защитить ваш сервер от большинства известных угроз. 3. Настройка брандмауэра Брандмауэр играет важную роль в обеспечении безопасности вашего VPS. Он контролирует входящий и исходящий трафик на вашем сервере, позволяя только легитимным соединениям проходить. Вот как вы можете настроить брандмауэр на серверах Ubuntu и Debian: Установка UFW: UFW (Uncomplicated Firewall) - это простой в использовании интерфейс для управления брандмауэром iptables. Вы можете установить его с помощью команды sudo apt install ufw. Настройка правил UFW: После установки UFW вы можете настроить правила для различных портов и служб. Например, если вы хотите разрешить доступ к порту 22 (SSH), вы можете использовать команду sudo ufw allow 22. Включение UFW: После настройки правил вы можете включить UFW с помощью команды sudo ufw enable. Это активирует брандмауэр и применяет ваши правила. Проверка статуса UFW: Вы можете проверить статус UFW и список ваших правил с помощью команды sudo ufw status. Вот пример того, как выглядят эти команды в терминале: sudo apt install ufw sudo ufw allow 22 sudo ufw enable sudo ufw status Помните, что настройка брандмауэра - это важный шаг в обеспечении безопасности вашего сервера. Правильная настройка брандмауэра может значительно уменьшить риск несанкционированного доступа к вашему серверу. 4. Смена стандартных портов Смена стандартных портов - это еще один способ усилить безопасность вашего сервера. Хакеры часто сканируют наиболее распространенные порты (например, 22 для SSH), поэтому изменение портов на нестандартные может помочь уменьшить риск атак. Вот как вы можете изменить стандартный порт SSH с 22 на другой (например, 2222) на серверах Ubuntu и Debian: Редактирование файла конфигурации SSH: Откройте файл конфигурации SSH с помощью команды: nano /etc/ssh/sshd_config Найдите строку, которая начинается с #Port 22, удалите символ # и измените 22 на 2222 (или любой другой порт, который вы хотите использовать). Перезагрузка службы SSH: После редактирования файла конфигурации вам нужно перезагрузить службу SSH, чтобы применить изменения. Вы можете сделать это с помощью команды: sudo systemctl restart ssh Обновление правил UFW: Теперь, когда вы изменили порт SSH, вам нужно обновить правила UFW, чтобы разрешить трафик на новом порту. Вы можете сделать это с помощью команды sudo ufw delete allow 22 и sudo ufw allow 2222 Вот пример того, как выглядят эти команды в терминале: sudo nano /etc/ssh/sshd_config sudo systemctl restart ssh sudo ufw delete allow 22 sudo ufw allow 2222 Помните, что при изменении порта SSH вам нужно будет указывать новый порт при подключении к серверу через SSH. Например, если вы изменили порт на 2222, вы должны будете использовать команду ssh -p 2222 user@your_server_ip. Также стоит отметить, что некоторые порты зарезервированы для определенных служб и не должны использоваться для SSH. Убедитесь, что выбранный вами порт свободен и не используется другими службами. 5. Использование SSH ключей SSH ключи представляют собой безопасный метод аутентификации, который предлагает больше безопасности, чем традиционные пароли. Они особенно полезны для серверов, доступных через интернет, где угроза взлома высока. Вот как вы можете создать и использовать SSH ключи на серверах Ubuntu и Debian: Создание SSH ключей: Для создания нового SSH ключа вы можете использовать команду ssh-keygen. Эта команда создаст пару ключей: открытый ключ (для установки на сервере) и закрытый ключ (для использования при подключении к серверу). Установка открытого ключа на сервере: После создания ключей вы должны установить открытый ключ на вашем сервере. Это можно сделать, скопировав содержимое файла открытого ключа (обычно ~/.ssh/id_rsa.pub) в файл ~/.ssh/authorized_keys на вашем сервере. Использование закрытого ключа для подключения к серверу: При подключении к серверу вы должны указать ваш закрытый ключ с помощью опции -i команды ssh. Например, ssh -i ~/.ssh/id_rsa user@your_server_ip Вот пример того, как выглядят эти команды в терминале: ssh-keygen cat ~/.ssh/id_rsa.pub | ssh user@your_server_ip "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys" ssh -i ~/.ssh/id_rsa user@your_server_ip Помните, что при использовании SSH ключей важно хранить ваш закрытый ключ в безопасном месте и не передавать его никому. Если кто-то получит доступ к вашему закрытому ключу, он сможет подключиться к вашему серверу. Поэтому также рекомендуется защитить ваш закрытый ключ паролем при создании. Это можно сделать, следуя инструкциям команды ssh-keygen. 5.1. Настройка SSHD_CONFIG Открываем файл для редактирования: nano /etc/ssh/sshd_config В самый конец файла вставляем: PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys RhostsRSAAuthentication no HostbasedAuthentication no PermitEmptyPasswords no Чтобы отключить вход по паролю, изменяем значение параметра в том же файле sshd_config: PasswordAuthentication no Для Ubuntu 22.04 дополнительно пропишите PubkeyAcceptedAlgorithms +ssh-rsa После этого сохраните файл Ctrl + O .. и закройте его Ctrl + X Присвойте права для файла: chmod 700 ~/.ssh/ && chmod 600 ~/.ssh/authorized_keys И перезапустите сервис sshd service sshd restart 6. Настройка Fail2Ban Fail2Ban - это инструмент, который помогает защитить ваш сервер от брутфорс-атак. Он мониторит логи на предмет повторяющихся неудачных попыток входа и автоматически блокирует IP-адреса, которые показывают подозрительную активность. Вот как вы можете настроить Fail2Ban на серверах Ubuntu и Debian: Установка Fail2Ban: Fail2Ban можно установить с помощью менеджера пакетов apt. Для этого введите команду sudo apt install fail2ban. Настройка конфигурации Fail2Ban: После установки Fail2Ban вам нужно настроить его конфигурацию. Конфигурационные файлы Fail2Ban находятся в каталоге /etc/fail2ban. Вы можете скопировать файл jail.conf в новый файл jail.local с помощью команды sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local. Затем вы можете редактировать jail.local с помощью текстового редактора, например, nano: sudo nano /etc/fail2ban/jail.local. Настройка правил Fail2Ban: В файле jail.local вы можете настроить различные параметры, такие как длительность блокировки (параметр bantime), количество неудачных попыток входа, после которых IP-адрес будет заблокирован (параметр maxretry), и так далее. Вы также можете настроить специфические правила для различных служб, таких как SSH или Apache. Запуск и проверка статуса Fail2Ban: После настройки конфигурации вы можете запустить Fail2Ban с помощью команды sudo systemctl start fail2ban. Вы можете проверить статус Fail2Ban с помощью команды sudo systemctl status fail2ban. Вот пример того, как выглядят эти команды в терминале: sudo apt install fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local sudo systemctl start fail2ban sudo systemctl status fail2ban Помните, что Fail2Ban - это мощный инструмент, но он не является панацеей от всех видов атак. Всегда следует использовать его в сочетании с другими методами обеспечения безопасности, такими как использование сложных паролей, ограничение доступа по IP-адресам и использование SSH ключей для аутентификации. Также важно регулярно обновлять вашу систему и следить за последними угрозами безопасности. Fail2Ban хранит свои настройки в каталоге /etc/fail2ban. В данном каталоге лежит файл jail.conf, который содержит стандартные настройки. Редактировать данный файл не рекомендуется, так как он перезаписывается при обновлении пакета Fail2Ban. Поэтому для настроек потребуется создать новый конфигурационный файл с именем jail.local. Вот пример того, как выглядят эти команды в терминале: sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local Файл jail.local поделён на секции, так называемые «изоляторы» (jails), каждая секция отвечает за определённый сервис и тип атаки. Вот пример конфигурации для защиты SSH от повторяющихся неудачных попыток авторизации на SSH–сервере, проще говоря, «brute–force»: [DEFAULT] ignoreip = 127.0.0.1/8 bantime = 600 maxretry = 3 banaction = iptables-multiport [ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6 Параметры из секции [DEFAULT] применяются ко всем остальным секциям, если не будут переопределены. Секция [ssh] отвечает за защиту SSH. Важно помнить, что при изменении настроек Fail2Ban, вам нужно будет перезагрузить службу Fail2Ban, чтобы применить изменения. Вы можете сделать это с помощью команды sudo systemctl restart fail2ban. sudo systemctl restart fail2ban Пожалуйста, убедитесь, что вы тщательно проверили все настройки перед их применением, чтобы избежать случайной блокировки полезного трафика. Дополнительные варианты конфигурации jail.local для самых популярных сервисов: MySQL: [mysqld-auth] enabled = true filter = mysqld-auth port = 3306 logpath = /var/log/mysql/error.log Nginx: [nginx-http-auth] enabled = true filter = nginx-http-auth port = http,https logpath = /var/log/nginx/error.log Apache: [apache-auth] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache2/error.log После редактирования файла jail.local, вам нужно будет перезагрузить службу Fail2Ban, чтобы применить изменения. Вы можете сделать это с помощью команды sudo systemctl restart fail2ban. sudo systemctl restart fail2ban 7. Резервное копирование данных Резервное копирование данных является критически важной задачей для любого сервера. Это создание запасных копий данных, которое может быть настроено по регулярному расписанию или выполняться однократно в удобный для пользователя момент. В случае сбоя системы или потери данных, резервные копии позволяют быстро восстановить работу. Вот как вы можете настроить резервное копирование данных на серверах Ubuntu и Debian: Создание резервной копии с помощью dd: Команда dd копирует файл, преобразуя в процессе формат данных, в соответствии с указанными операндами. Чтобы сделать запасную копию вашего жесткого диска используйте следующую команду: dd if =<исходный_диск> of=<полное_имя_копии> bs=8M conv=sync,noerror Восстановление из резервной копии с помощью dd: Чтобы сделать восстановление вашего жесткого диска из резервной копии используйте следующую команду: dd if =<полное_имя_копии> of=<целевой_диск> bs=8M conv=sync,noerror Создание резервной копии с помощью tar: Команда tar в Linux часто используется для создания архивов .tar.gz или .tgz, также называемых «tarballs». Чтобы сделать бекап вашей системы используйте следующую команду: tar -cvpzf <имя_файла>.tar.gz --exclude=<имя_файла> --one-file-system <целевой_каталог> 8. Заключение и дополнительные рекомендации В этой статье мы рассмотрели различные аспекты обеспечения безопасности VPS, включая настройку брандмауэра, смену стандартных портов, использование SSH ключей для аутентификации, настройку Fail2Ban для автоматической блокировки IP-адресов и резервное копирование данных. Важно помнить, что обеспечение безопасности - это непрерывный процесс, который требует регулярного мониторинга и обновления. Всегда следите за последними угрозами безопасности и обновлениями программного обеспечения. В заключение, вот несколько дополнительных рекомендаций по обеспечению безопасности VPS: Регулярно устанавливайте важные обновления ОС и ПО Используйте только ПО из проверенных источников Уделите должное внимание настройке Firewall Переименуйте стандартную учетную запись администратора Создайте несколько административных аккаунтов Поддерживайте виртуальные машины в актуальном состоянии Используйте несколько виртуальных машин для большей устойчивости и доступности Внедрение стратегии непрерывности бизнес-процессов и аварийного восстановления (BCDR) Помните, что безопасность вашего VPS - это ваша ответственность. Будьте внимательны, будьте безопасны! -
Во всех инструментах которые я использую на серверах, я предпочитаю использовать docker-compose. Да, при большом количестве запускаемых контейнеров это будет не удобно (хотя для этих целей есть kubernetes), но мои личные проекты не такие большие. Глава 1: Введение в Docker Compose Docker Compose - это инструмент для определения и запуска многоконтейнерных Docker-приложений. Он позволяет определить контейнеры, сети и тома в файле docker-compose.yml, а затем запустить их одной командой. Docker Compose позволяет: - Определить несколько контейнеров в одном файле - Определить зависимости между контейнерами - Определить сети и тома для контейнеров - Запустить все контейнеры одной командой - Легко масштабировать приложение Глава 2: Установка Docker Compose Перед тем, как начать использовать Docker Compose, необходимо установить его на вашу машину. Docker Compose поставляется в составе Docker Desktop для Windows и Mac. Для установки на Linux, следуйте инструкциям на официальном сайте Docker или по статьям на нашем форуме. Глава 3: Определение контейнеров в файле docker-compose.yml Создайте файл docker-compose.yml в корневой директории вашего проекта. В этом файле вы определяете контейнеры, сети, тома и другие параметры для вашего приложения. Пример определения двух контейнеров: базы данных MySQL и веб-сервера NGINX. В этом примере мы определяем два сервиса: db и web. Сервис db использует официальный образ MySQL версии 5.7 и устанавливает переменную окружения MYSQL_ROOT_PASSWORD. Сервис web использует официальный образ NGINX и пробрасывает порт 80. Также мы определяем зависимость web от db, т.е. контейнер db будет запущен перед контейнером web. # Глава 4: Запуск контейнеров с помощью Docker Compose После того, как вы определили контейнеры в docker-compose.yml, вы можете запустить их одной командой: docker-compose up Но при нажатии ctrl + c - контейнеры будут остановлены. Эта команда запустит все контейнеры, определенные в файле docker-compose.yml. Если вы хотите запустить контейнеры в фоновом режиме, используйте флаг -d: docker-compose up -d Чтобы остановить контейнеры, используйте команду: docker-compose down Глава 5: Работа с сетями и томами Docker Compose позволяет легко работать с сетями и томами для ваших контейнеров. В этой главе мы рассмотрим, как настроить сети и тома в Docker Compose и как использовать их для эффективной работы с данными и взаимодействия между контейнерами. Создание и управление сетями в Docker Создание сети В Docker для создания новой сети используется команда docker network create. Например, допустим, вы хотите создать сеть с именем my_network. Выполните следующую команду: docker network create my_network Просмотр списка сетей Чтобы просмотреть список всех сетей в Docker, выполните команду docker network ls. docker network ls Просмотр информации о сети Чтобы просмотреть информацию о конкретной сети в Docker, выполните команду docker network inspect с именем сети. Например: docker network inspect my_network Подключение контейнера к сети Чтобы подключить контейнер к сети, используйте параметр --network при запуске контейнера. Например: docker run --network my_network my_image Удаление сети Чтобы удалить сеть, используйте команду docker network rm. Например: docker network rm my_networ Чтобы удалить все неиспользуемые сети: docker network prune Использование сетей в Docker Compose Создание сети Для создания сети в Docker Compose необходимо определить ее в файле docker-compose.yml. Например: В этом примере мы создаем сеть app_net и определяем, что контейнеры db и web должны использовать эту сеть. Подключение контейнера к сети Чтобы подключить контейнер к сети в Docker Compose, используйте параметр networks в определении сервиса. Например: В этом примере мы определяем, что сервис my_service должен использовать сеть app_net. Использование инструментов для работы с сетями Docker Compose Docker Compose позволяет легко создавать и управлять сетями для ваших контейнеров. Мы уже рассмотрели, как создавать сети в Docker Compose и как подключать контейнеры к этим сетям. Docker Swarm Docker Swarm - это инструмент для создания и управления кластером Docker. Он также позволяет создавать и управлять сетями для ваших контейнеров. Чтобы создать новую сеть в Docker Swarm, выполните команду docker network create с опцией --driver. Например: docker network create --driver overlay my_network Weave Net Weave Net - это инструмент для создания виртуальных сетей в Docker. Он позволяет создавать сети, которые могут пересекать границы хостов, и обеспечивает высокую производительность и безопасность. Чтобы использовать Weave Net, вам необходимо установить его и запустить на всех хостах, где будут выполняться ваши контейнеры. Calico Calico - это инструмент для создания сетей в Kubernetes. Он позволяет создавать сети для кластеров Kubernetes и обеспечивает высокую производительность и безопасность. Для создания сетей в Kubernetes вам необходимо настроить Calico в кластере. Flannel Flannel - это инструмент для создания виртуальных сетей в Kubernetes. Он позволяет создавать сети, которые могут пересекать границы хостов, и обеспечивает высокую производительность и безопасность. Для использования Flannel в Kubernetes вам необходимо установить его и настроить его в кластере. Работа с томами Docker Compose также позволяет легко работать с томами для ваших контейнеров. Для создания тома в Docker Compose необходимо определить его в файле docker-compose.yml. Например, допустим, у вас есть приложение, которое записывает логи в файл. Вы можете создать том для хранения лог-файлов в файле docker-compose.yml следующим образом: В этом примере мы определяем сервис app, который использует образ вашего приложения. Мы также определяем том app_logs в разделе volumes. Обратите внимание на параметр volumes в определении сервиса app. Мы указываем, что контейнер app должен использовать том app_logs для хранения лог-файлов. Это позволяет сохранять лог-файлы между запусками контейнеров и использовать их для анализа и отладки. Глава 6: Масштабирование приложения Docker Compose позволяет легко масштабировать ваше приложение и управлять им. В этой главе мы рассмотрим, как масштабировать контейнеры с помощью Docker Compose и как использовать инструменты мониторинга и логирования для отслеживания состояния вашего приложения. Масштабирование контейнеров Docker Compose позволяет масштабировать контейнеры с помощью флага `--scale`. Например, допустим, у вас есть приложение, состоящее из трех контейнеров: базы данных, веб-сервера и приложения. Если вы хотите запустить два экземпляра веб-сервера, вы можете использовать команду: docker-compose up --scale web=2 Эта команда запустит два экземпляра контейнера `web`. Использование инструментов мониторинга и логирования Docker Compose также позволяет использовать инструменты мониторинга и логирования, такие как Prometheus и ELK stack, для отслеживания состояния ваших контейнеров и приложения. Пример использования Prometheus Prometheus - это система мониторинга и оповещения, которая позволяет отслеживать состояние ваших контейнеров и приложений. Для использования Prometheus в Docker Compose необходимо добавить соответствующий сервис в файл `docker-compose.yml`. В этом примере мы добавили сервис `prometheus` в наш файл `docker-compose.yml`. Мы монтируем файл конфигурации `prometheus.yml` в контейнер `prometheus` и пробрасываем порт 9090 для доступа к веб-интерфейсу Prometheus. Пример файла `prometheus.yml`: В этом примере мы определяем три job для мониторинга сервисов `prometheus`, `web` и `db`. Мы указываем, что мониторинг будет осуществляться каждые 5 секунд и указываем адреса контейнеров, которые мы хотим мониторить. Пример использования ELK stack ELK stack - это набор инструментов для сбора, обработки и анализа логов. Для использования ELK stack в Docker Compose необходимо добавить соответствующие сервисы в файл `docker-compose.yml`. В этом примере мы добавили сервисы web, db и logstash в наш файл docker-compose.yml. Мы также определяем настройки логирования для контейнера web: мы используем драйвер json-file и ограничиваем размер лог-файлов до 10 мегабайт с максимальным количеством файлов 3. Мы также монтируем файл конфигурации logstash.conf в контейнер logstash и пробрасываем порт 5044 для приема логов. Пример файла logstash.conf: В этом примере мы определяем входную точку для логов, используя протокол Beats на порту 5044. Мы также определяем фильтр для обработки логов веб-сервера с помощью регулярного выражения Grok. Наконец, мы отправляем логи в Elasticsearch для дальнейшего анализа и хранения. Глава 7: Создание многоконтейнерных приложений Docker Compose - это инструмент для создания и управления многоконтейнерными приложениями. В этой главе мы рассмотрим, как создать многоконтейнерное приложение с помощью Docker Compose и как настроить взаимодействие между контейнерами. Создание многоконтейнерного приложения Для создания многоконтейнерного приложения с помощью Docker Compose необходимо создать файл docker-compose.yml, в котором определены все необходимые сервисы и их настройки. Например, допустим, у вас есть приложение, состоящее из трех контейнеров: базы данных, веб-сервера и приложения. Вы можете определить эти сервисы в файле docker-compose.yml следующим образом: В этом примере мы определяем три сервиса: db, web и app. Сервис db использует образ MySQL версии 5.7 и задает переменную окружения MYSQL_ROOT_PASSWORD. Сервис web использует образ Nginx и пробрасывает порт 80 для доступа к веб-серверу. Сервис app использует ваш образ приложения и задает переменную окружения DB_HOST, указывающую, что приложение зависит от контейнера базы данных. Настройка взаимодействия между контейнерами Для настройки взаимодействия между контейнерами вы можете использовать параметр depends_on в файле docker-compose.yml. Например, допустим, ваше приложение должно использовать базу данных MySQL. В этом случае вы можете определить зависимость приложения от контейнера базы данных следующим образом: В этом примере мы определяем, что сервис app зависит от сервиса db. Мы также задаем переменную окружения DB_HOST, чтобы приложение могло обращаться к контейнеру базы данных. Вы также можете использовать параметр links, чтобы связать контейнеры между собой. Например, допустим, ваше приложение должно использовать веб-сервер Nginx. В этом случае вы можете определить зависимость приложения от контейнера веб-сервера следующим образом: В этом примере мы определяем, что сервис app зависит от сервиса web. Мы также задаем переменную окружения WEB_HOST, Заключение Docker Compose - это мощный инструмент для создания и управления многоконтейнерными приложениями. В этой статье мы рассмотрели, как масштабировать контейнеры с помощью Docker Compose и как использовать инструменты мониторинга и логирования для отслеживания состояния вашего приложения. Надеюсь, эта статья помогла вам лучше понять, как использовать Docker Compose в вашем проекте.