Рубрики
Uncategorized

Докер PHP + nginx

Автор оригинала: David Wong.

Ближе к национальному дню я повернулся, чтобы повозиться с докером . Поскольку я занимался разработкой PHP, я начал сначала с окружающей среды.

Первоначально предполагалось создать PHP + MySQL + nginx + redis, но поскольку использовались MySQL и redis компании, был построен только PHP + nginx, потому что моя операционная система win10, и следующие операции выполняются в win.

Сначала вытяните изображение. Конечно, вы можете написать свой собственный файл dockerfile, чтобы создать свой собственный образ. Сначала извлеките изображение nginx:

docker pull nginx

По умолчанию будет извлечено последнее изображение. Вы можете использовать изображения docker для просмотра существующего изображения после завершения.

Затем установите PHP. Так же, как и изображение nginx, вы можете непосредственно извлечь изображение для завершения операции. Извлеченный PHP-образ имеет только частичное расширение. Расширение, которое вам нужно, должно войти в контейнер для установки. Чиновник дает три способа установки расширения PHP:

docker-php-ext-install
pecl install name-xxx
Curl source installation

Но есть проблема с запуском PHP таким образом, то есть повторно созданный образ или повторно запущенный контейнер не является расширением, которое было установлено в прошлый раз, поэтому его необходимо переустановить. Поэтому здесь мы используем dockerfile для создания вашего собственного образа PHP.

Сначала создайте каталог, а затем создайте файл dockerfile в этом каталоге. Содержимое файла выглядит следующим образом:

FROM php:7.2-fpm AS php7.2
RUN docker-php-ext-install mysqli pdo pdo_mysql \
    && pecl install redis-5.0.0 \
    && pecl install yaf-3.0.8 \
    && pecl install xdebug-2.7.2 \
    && docker-php-ext-enable redis xdebug yaf \
    && cd /usr/local/etc/php \
    && touch php.ini

Затем откройте CMD в текущем каталоге и выполните:

docker build -t php7.2 .

Затем мы начнем создавать ваш собственный PHP-образ. Приведенный выше файл dockerfile относительно прост. Только на основе образа PHP: 7.2-fpm мы используем docker PHP ext install и PECL для установки расширений mysqli, PDO, redis, YAF и Xdebug и создаем файл php.ini для последующего монтирования локального файла php.ini.

Dockerfile также может выполнять более сложные операции. В образе Ubuntu мы можем запускать run run для выполнения команд терминала для установки PHP и nginx, а также запускать службы nginx и PHP FPM. Таким образом, мы можем установить PHP + nginx в одном образе одновременно, но здесь мы создаем только самый простой образ PHP.

Когда это будет сделано, у нас будет два зеркала.

Теперь нам нужно запустить эти два образа и смонтировать локальный рабочий каталог и файл конфигурации в соответствующий каталог контейнера. Однако довольно хлопотно запускать два образа и каждый раз монтировать соответствующий файл, и IP-адрес будет каждый раз меняться, поэтому нам нужно изменить конфигурацию nginx, поэтому лучше установить интегрированную среду напрямую…

Поэтому здесь мы используем docker compose для запуска этих двух парней:

version: '2'
services:
  nginx:
    container_name: "nginx"
    image: nginx
    ports:
      - "80:80"
    depends_on:
      - php
    volumes:
      - "F:/phpstudy/PHPTutorial/nginx/conf.d:/etc/nginx/conf.d"
      - "F:/phpstudy/PHPTutorial/WWW:/usr/www/html"
      - "F:/logs/error.log:/var/log/nginx/error.log"
      - "F:/logs/access.log:/var/log/nginx/access.log"
    networks:
      - app_net
  php:
    image: php7.2:latest
    ports:
      - "9000:9000"
    volumes:
      - "F:/phpstudy/PHPTutorial/WWW:/var/www/html"
      - "F:/lnmp/php.ini:/usr/local/etc/php/php.ini"
    networks:
      - app_net
    container_name: "php"
networks:
  app_net:
    ipam:
      driver: default
      config:
        - subnet: 10.10.0.0/16

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

docker-compose up -d

Эта команда войдет в фоновый режим после выполнения. Рекомендуется не – D в конце первой установки:

docker-compose up

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

Рекомендую: https://docs.docker.com/