ВОЙТИ
    opened image

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

     

    1. Установка Docker и Docker Compose

    Прежде всего, вам необходимо установить Docker и Docker Compose на свою систему. Вы можете установить Docker, следуя инструкциям в статье Как установить PostgreSQL и pgAdmin в Docker и подобным на нашем сайте. 

     

    1. Создание проекта

    Создайте новую папку для вашего проекта и перейдите в нее:

    mkdir my-php-project
    cd my-php-project

     

    1. Создание файла Dockerfile

    Внутри папки проекта создайте файл с именем Dockerfile. Этот файл будет содержать инструкции для сборки образа Docker с нужной версией PHP.

     

    vim Dockerfile

     

    Внутри файла вставьте следующий код, заменив 7.4 на нужную версию PHP:

    FROM php:7.4-apache
    
    RUN docker-php-ext-install pdo_mysql

     

     

    Этот код указывает Docker использовать официальный образ PHP версии 7.4 с Apache. Затем он устанавливает расширение pdo_mysql для работы с MySQL.

     

    1. Создание файла docker-compose.yml

    Создайте файл с именем docker-compose.yml в папке проекта. Этот файл будет содержать конфигурацию для запуска контейнеров с PHP и MySQL. Внутри файла вставьте следующий код:

     

    version: '3.8'
    
    services:
      php:
        build:
          context: .
          dockerfile: Dockerfile
        volumes:
          - .:/var/www/html
        ports:
          - 9900:80
    
      mysql:
        image: mysql:5.7
        environment:
          MYSQL_ROOT_PASSWORD: rootpassword
          MYSQL_DATABASE: mydatabase
          MYSQL_USER: myuser
          MYSQL_PASSWORD: mypassword
        volumes:
          - mysql-data:/var/lib/mysql
    
    volumes:
      mysql-data:
    

     

    В этой конфигурации определены два сервиса: php и mysql. Сервис php использует образ, собранный из файла Dockerfile, а сервис mysql использует официальный образ MySQL версии 5.7. Здесь также указаны параметры окружения и тома для сохранения данных MySQL.

     

    1. Сборка и запуск контейнеров

    Чтобы собрать и запустить контейнеры, выполните следующую команду в терминале:

    docker-compose up --build -d
    

     

     

    Эта команда соберет образ PHP из вашего Dockerfile, скачает образ MySQL и запустит оба контейнера в фоновом режиме. После выполнения этой команды, контейнеры будут работать и доступны для использования.

     

    1. Проверка работы контейнеров

    Чтобы проверить, что контейнеры успешно запущены и работают, выполните следующую команду:

    docker-compose ps

     

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

     

    1. Создание PHP-файла для тестирования

    Теперь, когда наши контейнеры работают, давайте создадим простой PHP-файл для проверки работы нашей конфигурации. В папке проекта создайте файл с именем index.php и вставьте следующий код:

    <?php
    phpinfo();

     

     

    1. Доступ к PHP-файлу через браузер

    Чтобы получить доступ к вашему PHP-файлу через браузер, вам необходимо узнать IP-адрес вашег севрера. Выполните следующую команду:

     
    ip a

     

    Вам будет предоставлен IP-адрес вашего сервера. Введите этот IP-адрес в адресной строке браузера, и порт 9900 и вы должны увидеть информацию о версии PHP, которую вы установили.

    http://your_ip:9900/index.php

     

     

     

    Заключение

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