Болевое пятно
Как просто и быстро инициализировать новую среду разработки PHP?
Когда я пытаюсь начать новый веб-проект, я часто сталкиваюсь с утомительной задачей восстановления среды Docker. Я думаю, что когда вы начнете новый проект или быстро полностью изолируетесь от предыдущего проекта, у вас также будет новая среда docker.
Из этой статьи вы получите
Используйте технологию docker-compose Компоновки контейнеров, запустите все службы за один шаг. Контейнеры PHP также упаковываются на официальной основе с некоторыми распространенными расширениями (с исходным кодом сборки, сильной практической способностью упаковывать себя). Use docker-compose Container layout technology, start all services in one step. PHP containers are also packaged on an official basis with some common extensions (with build source code, strong hands-on ability to pack themselves). php ,
Рамки
Среда, созданная в этой статье, выглядит так, как показано выше.
Описание окружающей среды
Операционная среда
Mac OS 10.13.6Виртуальная коробка 5.2.14Ubuntu 16.04.4Докер 17.07.0-ce
контейнер
Nginx 1.12.1-альпийскийPHP-fpm 5.6MySQL 5.7Редис 3.2Memcached 1.4.27
В этой статье описывается рабочая среда автора, использующая установку виртуальной машины VBox на Mac, установку среды Docker в среде виртуальной машины Debian, файл в среде Mac, посредством монтирования файлов, для достижения редактирования среды Mac, эффект обновления среды Docker в режиме реального времени. Почему бы вам не установить Docker непосредственно под Mac?
Эксплуатационные материалы
. -build# docker mirror build material │ ├── php5.6 ## php 5.6 │ │ ├── Dockerfile │ │ ├── imagick-3.4.3.tgz │ │ ├── memcached-2.2.0.tgz │ │ ├── redis-4.0.2.tgz │ │ ├── sources.list │ │ └── xdebug-XDEBUG_2_5_5.tar.gz Self-built Mirror of -php-cli# PHP cli │ ├── amqp-1.9.3.tgz │ ├── Dockerfile │ ├── Dockerfile-php-swoole │ ├── memcached-3.0.4.tgz │ ├── redis-4.1.1.tgz │ ├── sources.list.jessie │ ├── swoole-4.0.4.tgz │ ├── swoole-4.2.6.tgz │ ├── xdebug-2.6.1.tgz │ └── yaf-3.0.7.tgz - config configuration file -apt Because of the Debian series used, apt is named Renewal of - sources. list # to domestic sources Configuration of -memcached_memchached │ │ └── memcached.conf Configuration of -mysql_mysql │ │ ├── conf.d │ │ │ └── mysqld_safe_syslog.cnf │ │ └── my.cnf Configuration of -nginx_nginx │ │ ├── conf.d │ │ │ ├── default │ │ │ └── xiuno │ │ ├── mime.types │ │ ├── nginx.conf │ │ └── sites-enabled Configuration of PHP php, sub-cli, and FPM │ │ ├── cli │ │ │ ├── conf.d │ │ │ │ ├── 05-opcache.ini │ │ │ │ ├── 10-pdo.ini │ │ │ │ ├── 20-curl.ini │ │ │ │ ├── 20-gd.ini │ │ │ │ ├── 20-imagick.ini │ │ │ │ ├── 20-json.ini │ │ │ │ ├── 20-memcache.ini │ │ │ │ ├── 20-mysqli.ini │ │ │ │ ├── 20-mysql.ini │ │ │ │ ├── 20-pdo_mysql.ini │ │ │ │ ├── 20-readline.ini │ │ │ │ ├── 20-redis.ini │ │ │ │ ├── 20-xdebug.ini │ │ │ │ └── swoole.ini │ │ │ └── php.ini │ │ ├── fpm │ │ │ ├── conf.d │ │ │ │ ├── docker.conf │ │ │ │ ├── www.conf │ │ │ │ └── zz-docker.conf │ │ │ ├── docker-php-fpm.conf │ │ │ ├── php-fpm.conf │ │ │ ├── php.ini │ │ │ └── pool.d │ │ │ └── www.conf │ │ └── mods-available │ │ ├── curl.ini │ │ ├── gd.ini │ │ ├── imagick.ini │ │ ├── json.ini │ │ ├── memcache.ini │ │ ├── mysqli.ini │ │ ├── mysql.ini │ │ ├── opcache.ini │ │ ├── pdo.ini │ │ ├── pdo_mysql.ini │ │ ├── readline.ini │ │ ├── redis.ini │ │ └── xdebug.ini -redis# redis configuration │ ├── redis.conf │ ├── redis-server.sh │ └── sentinel.conf - data# for data persistence - Mysql MySQL file mounting -redis# redis persistent data folder - docker-compose.yaml# container arrangement!!! - Log# logs generated by containers () - MySQL MySQL log │ │ ├── error.log │ │ └── mysql.log - nginx \ nginx log │ │ ├── access.log │ │ ├── access_xiuno.log │ │ ├── error.log │ │ └── error_xiuno.log │ └── php - php PHP code storage directory -xiunobbs# PHP project - Tool # PHP tools ├── composer.phar └── phpunit-4.8.36.phar
Загрузка файла конфигурации
git clone https://gitee.com/xupaul/docker_fast_init
Инструкции по настройке
В настоящее время автор не написал соответствующих сценариев автоматизации для автоматической адаптации к среде использования пользователя, поэтому здесь нам необходимо настроить файл конфигурации после загрузки.
Настройка файла Docker-compose.yml
Этот файл имеет большое количество конфигураций монтирования файлов, которые необходимо настроить. Возьмем пример.
version: "2"
services:
http:
image: nginx:1.12.1-alpine
volumes:
- ./config/nginx/nginx.conf:/etc/nginx/nginx.conf:rw
ports:
- "8080:80"
environment:
TZ : "Asia/Shanghai"
networks:
tasker_net:
ipv4_address: "192.63.0.11"В конце примера тома Следующая строка-хост. At the end of the example volumes The next line is the host. nginx.conf Configuration files mount and override containers nginx.conf Documents,
Если вы используете его, чтобы vbox Виртуальная машина, то вам нужно ./ Чтобы заменить его на докер Запущенный путь среды!
пребывание порты Здесь служба HTTP не конфликтует с собственным портом 80, и разрешения sudo могут применяться только для портов менее 1024, здесь я использую 8080 в качестве значения по умолчанию. Конфигурации портов других контейнеров следуют приведенным выше правилам для запуска с помощью одной команды.
Часовые пояса настраиваются для каждого контейнера.
В части сетевого IP-адреса IP-адрес выделяется вручную, чтобы его было легко настроить.
Конфигурация Nginx
Настроена TCP – связь между php-fpm и перезаписью маршрутизации PHP. Настроено статическое кэширование ресурсов.
Конфигурация MySQL
Откройте и запишите общий журнал запросов для программы отладки. Обратите внимание, что разрешения на чтение и запись файла конфигурации, установленные там, должны быть настраиваемыми только для чтения!
Конфигурация PHP
php:
image: paulxu/php:5.6-fpm-jessis-pdo-xdebug-mysqli-gd-mb-zip-2
volumes:
- ./config/php/cli/php.ini:/usr/local/etc/php/php.ini/:rw
ports:
- "9000"
environment:
PHP_IDE_CONFIG: "serverName=bs"
XDEBUG_CONFIG: "remote_host=10.0.2.2 remote_port=9000"Я упаковал некоторые распространенные расширения для php, и Xdebug необходимо настроить remote_host IP (необходимо настроить файлы docker-compose.yml, ~/config/php/cli/20-xdebug.ini). I packaged some common extensions for php, and Xdebug needs to be adjusted remote_host IP (docker-compose.yaml, ~/config/php/cli/20-xdebug.ini files need to be adjusted). server_name Need to be adjusted in conjunction with IDE development, such as in PHPStorm
Конфигурация Redis
Никакой специальной конфигурации
Конфигурация Memcached
Никакой специальной конфигурации
Конструкция Зеркала
Зеркало PHP
Его можно вытащить с помощью следующей команды:
docker pull paulxu/php:5.6-fpm-jessis-pdo-xdebug-mysqli-gd-mb-zip-2
Или в ~/сборка/php5.6 Упаковка самостоятельно:
docker build -t paulxu/php:5.6-fpm-jessis-pdo-xdebug-mysqli-gd-mb-zip-2 -f dockerfile .
Если вы настраиваете имя тега, вам нужно настроить docker-compose.yml вместе
запуск
- Загрузите конфигурацию из gitee
- Настройте конфигурацию в соответствии с вашей средой
- Готов к зеркалу, зеркало также можно вытащить напрямую, я загрузил официальное.
- запуск
Команда “Пуск”
## To stop the current thread running, type `Ctrl + C'` docker-comose -f ./docker-compose.yaml up ## Background operation docker-comose -f ./docker-compose.yaml up -d
уничтожать
docker-comose -f ./docker-compose.yaml down
Распространенная проблема
Файлы конфигурации, смонтированные в MySQL, игнорируются и не работает
MySQL требует, чтобы файлы конфигурации были доступны только для чтения. Вам нужно установить их только для чтения.
Я не знаю, что делать с remote_host.
Отключите xdebug, настройте среду и запустите ее в рабочей среде IDE (потому что xdebug Необходимо связаться с IDE) http (В доступе к браузеру обратите внимание на сопоставление портов) доступ к коду контейнера PHP, в Nginx Disable xdebug, set up the environment and start it in the IDE running environment (because xdebug Need to communicate with IDE) http (In browser access, pay attention to port mapping) access PHP container code, in Nginx
Неправильное Время Сборки Докера Приводит К Сбою Зеркала Упаковки
В этом случае, если есть какие-то незначительные ошибки, вы можете проигнорировать их. Вы можете добавить команду выход 0 Чтобы скрыть ошибки
Последний
Я желаю вам всем сделать один шаг на месте, если у вас есть вопросы, оставьте сообщение, и если у вас возникнут трудности, вы можете попробовать схему запуска контейнеров docker на локальных виртуальных машинах.