🐳 Как установить PHP, MySQL и Nginx с помощью Docker Compose

Установка PHP, MySQL и Nginx через Docker Compose

by itisgood

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

В этой статье мы расскажем вам о процессе создания веб-окружения с PHP, MySQL и Nginx с помощью Docker Compose, что обеспечит надежное, повторяемое и масштабируемое развертывание.

Необходимые условия

Прежде чем приступить к работе, убедитесь, что у вас установлено следующее:

  • Docker: движок для запуска контейнеров.
  • Docker Compose: инструмент для определения и запуска многоконтейнерных приложений Docker.

Шаг 1: Ваше PHP-приложение

Поместите PHP-код в каталог с именем code в директории проекта. Docker Compose смонтирует эту директорию в контейнерах Nginx и PHP.

Для этого примера я создал пример PHP-скрипта в каталоге product:

mkdir my-php-app && cd my-php-app  echo "<?php phpinfo(); ?>" > index.php 

Шаг 2: Настройка файла Docker Compose

Сердцем Docker Compose является файл docker-compose.yml.

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

🐳 Docker Compose Up или Start и Down или Stop: в чем разница

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "8000:80"
    volumes:
      - ./code:/code
      - ./site.conf:/etc/nginx/conf.d/site.conf
    depends_on:
      - php
      - db
  php:
    image: php:fpm
    volumes:
      - ./code:/code
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydb
      MYSQL_USER: user
      MYSQL_PASSWORD: userpass
volumes:
  db_data:
Этот файл определяет три службы: web (Nginx), php (PHP-FPM) и db (MySQL).
Он также определяет volume для хранения данных MySQL.

Шаг 3: Настройка Nginx

Создайте файл конфигурации Nginx с именем site.conf в директории проекта.
Этот файл будет направлять Nginx на обработку веб-запросов и передавать PHP-запросы службе PHP-FPM.
server {
    index index.php index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /code;

    location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Шаг 4: Запуск приложения

Запустив файл docker-compose.yml и конфигурацию Nginx, вы можете запустить свое приложение:
docker-compose up -d 
Эта команда загрузит необходимые образы, создаст заданные тома и запустит службы в соответствии с настройками.

Шаг 5: Доступ к вашему приложению

После запуска контейнеров вы можете получить доступ к своему PHP-приложению, перейдя по адресу http://localhost:8000 в веб-браузере.

Заключение

Docker Compose предлагает удобный и эффективный способ развертывания сложных веб-приложений.

Следуя шагам, описанным в этом руководстве, вы создали PHP-приложение с Nginx и MySQL, которые работают в отдельных контейнерах, но при этом прекрасно взаимодействуют друг с другом.

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

Помните, что Docker и Docker Compose – мощные инструменты, и это лишь вершина айсберга.

По мере знакомства с этими технологиями вы откроете для себя еще больше способов оптимизации рабочих процессов развертывания.

см. также:

You may also like

Leave a Comment