Автор оригинала: 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/
Оригинал: “https://developpaper.com/docker-phpnginx/”