Рубрики
Uncategorized

Docker быстро создает и развивает среду разработки PHP, Nginx, MySQL, Redis, Debug, Memcached

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

Болевое пятно

Как просто и быстро инициализировать новую среду разработки 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.14
  • Ubuntu 16.04.4
  • Докер 17.07.0-ce

контейнер

  • Nginx 1.12.1-альпийский
  • PHP-fpm 5.6
  • MySQL 5.7
  • Редис 3.2
  • Memcached 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 вместе

запуск

  1. Загрузите конфигурацию из gitee
  2. Настройте конфигурацию в соответствии с вашей средой
  3. Готов к зеркалу, зеркало также можно вытащить напрямую, я загрузил официальное.
  4. запуск

Команда “Пуск”

## 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 на локальных виртуальных машинах.