✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| ffi | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | |
| ftp | ✓ | ✓ | ✓ | | | | | | | |
| gd | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| gearman | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| geoip | | | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| geos* | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| geospatial | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| gettext | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| gmagick | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| gmp | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| gnupg | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| grpc | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| http | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| igbinary | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| imagick | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| imap | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| inotify | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| interbase | | | | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| intl | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| ion | ✓ | ✓ | ✓ | ✓ | | | | | | | |
| ioncube_loader | | | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| jsmin | | | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| json_post | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| jsonpath | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | |
| ldap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| luasandbox | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| lz4* | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| lzf | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| mailparse | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| maxminddb | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | |
| mcrypt | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| memcache | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓
| memcached | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ memprof — специальные требования для memprof;
mongo — ;
mongodb — ;
mosquitto — ;
msgpack — ;
mssql — ;
mysql — ;
mysqli — ;
newrelic — ;
oauth — ;
oci8 — ;
odbc — ;
opcache — ;
opencensus — ;
openswoole — ;
opentelemetry — ;
parallel — специальные требования для parallel;
parle — специальные требования для parle;
pcntl — ;
pcov — ;
pdo_dblib — ;
pdo_firebird — ;
pdo_mysql — ;
pdo_oci — ;
pdo_odbc — ;
pdo_pgsql — ;
pdo_sqlsrv — ;
pgsql — ;
php_trie — ;
phpy — специальные требования для phpy;
pkcs11 — ;
pq — ;
propro — ;
protobuf — ;
pspell — . | timezonedb | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| uopz | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| uploadprogress | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| uuid | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| uv | ✓ | ✓ | ✓ | ✓ | ✓ | | | | | | | |
| vips* | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | |
| vld | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| wddx | | | | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| wikidiff2* | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | |
| xdebug | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| xdiff | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| xhprof | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| xlswriter | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | |
| xmldiff | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| xmlrpc | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| xsl | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| yac | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | |
| yaml | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| yar | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| zephir_parser | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | |
| zip | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| zmq | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| zookeeper | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| zstd | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Number of supported extensions: 147
此扩展来自https://github.com/mlocati/docker-php-extension-installer 参考示例文件
~/.bashrc
文件。source ~/.bashrc
~ php -v
PHP 7.2.13 (cli) (built: Dec 21 2018 02:22:47) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.13, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.6.1, Copyright (c) 2002-2018, by Derick Rethans
方法1:主机中使用composer命令
~/dnmp
目录,那composer的缓存路径就是~/dnmp/data/composer
。~/.bashrc
文件。
这里需要注意的是,示例文件中的
~/dnmp/data/composer
目录需是第一步确定的目录。
source ~/.bashrc
cd ~/dnmp/www/ **composer create-project yeszao/fastphp project --no-dev**
5. (可选)第一次使用 composer 会在 `~/dnmp/data/composer` каталоге под генерацией config.json файла, можно в этом файле указать внутренний репозиторий, например:
```json
{
"config": {},
"repositories": {
"packagist": {
"type": "composer",
"url": "https://mirrors.aliyun.com/composer/"
}
}
}
Метод второй: использование команды composer внутри контейнера
Есть ещё один способ — войти в контейнер и выполнить команду composer, используя PHP7 контейнер в качестве примера:
docker exec -it php /bin/sh
cd /www/localhost
composer update
Если нужно управлять сервисом, добавьте имя сервера после команды, например:
$ docker-compose up # создать и запустить все контейнеры
$ docker-compose up -d # создать и запустить фоновым режимом все контейнеры
$ docker-compose up nginx php mysql # создать и запустить несколько контейнеров nginx, php, mysql
$ docker-compose up -d nginx php mysql # создать и запустить в фоновом режиме контейнеры nginx, php, mysql
$ docker-compose start php # запустить сервис
$ docker-compose stop php # остановить сервис
$ docker-compose restart php # перезапустить сервис
$ docker-compose build php # собрать или пересобрать сервис
$ docker-compose rm php # удалить и остановить контейнер php
$ docker-compose down # остановить и удалить контейнеры, сети, образы и примонтированные тома
Во время разработки мы часто используем docker exec -it для входа в контейнеры. Создание удобных псевдонимов для часто используемых команд — это эффективный способ ускорить работу.
Сначала проверьте доступные контейнеры на хосте:
$ docker ps # просмотреть все запущенные контейнеры
$ docker ps -a # все контейнеры
Выводимые имена NAMES — это имена контейнеров, которые по умолчанию соответствуют nginx, php, php56, mysql и т. д.
Затем откройте ~/.bashrc или ~/.zshrc и добавьте:
alias dnginx='docker exec -it nginx /bin/sh'
alias dphp='docker exec -it php /bin/sh'
alias dphp56='docker exec -it php56 /bin/sh'
alias dphp54='docker exec -it php54 /bin/sh'
alias dmysql='docker exec -it mysql /bin/bash'
alias dredis='docker exec -it redis /bin/sh'
В следующий раз вход в контейнер будет намного быстрее, например, для входа в контейнер php:
$ dphp
ifconfig docker0
Используется для заполнения extra_hosts, чтобы контейнер мог получить доступ к хосту.
Расположение файлов журнала зависит от конфигурации каждого журнала в conf.
Журнал Nginx — это наиболее часто используемый журнал, поэтому он хранится отдельно в корневом каталоге log.
Каталог log сопоставляется с каталогом /var/log/nginx
контейнера Nginx, поэтому в конфигурации Nginx необходимо настроить местоположение вывода журнала, например:
error_log /var/log/nginx/nginx.localhost.error.log warn;
В большинстве случаев журналы PHP-FPM выводятся в журнал Nginx. Поэтому дополнительная настройка не требуется.
Кроме того, рекомендуется включить ошибки непосредственно в PHP:
error_reporting(E_ALL);
ini_set('error_reporting', 'on');
ini_set('display_errors', 'on');
Если это действительно необходимо, вы можете включить его следующим образом (в контейнере):
Войдите в контейнер, создайте файл журнала и измените права доступа:
$ docker exec -it php /bin/sh
$ mkdir /var/log/php
$ cd /var/log/php
$ touch php-fpm.error.log
$ chmod a+w php-fpm.error.log
Откройте и измените конфигурацию PHP-FPM на хост-машине conf/php-fpm.conf
, найдите следующую строку, удалите комментарий и измените значение на:
php_admin_value[error_log] = /var/log/php/php-fpm.error.log
Перезапустите контейнер PHP-FPM.
Поскольку пользователь mysql запускает MySQL в контейнере MySQL, он не может самостоятельно создавать файлы журналов в каталоге /var/log
. Поэтому мы помещаем журналы MySQL в каталог data, соответствующий каталогу проекта mysql, который соответствует каталогу /var/log/mysql/
контейнера.
slow-query-log-file = /var/log/mysql/mysql.slow.log
log-error = /var/log/mysql/mysql.error.log
Это конфигурация mysql.conf для файлов журналов.
Этот проект по умолчанию не включает phpMyAdmin и phpRedisAdmin, используемые для онлайн-управления MySQL и Redis, соответственно, в файле docker-compose.yml. Вы можете изменить или удалить их в соответствии с вашими потребностями.
Контейнер phpMyAdmin сопоставлен с портом хоста 8080, поэтому адрес доступа к phpMyAdmin на хосте — http://localhost:8080
.
Информация о подключении MySQL:
3306
Контейнер phpRedisAdmin сопоставлен с портом хоста 8081, поэтому адрес доступа к phpRedisAdmin на хосте — http://localhost:8081
.
Информация о подключении Redis:
6379
Чтобы использовать его в производственной среде, выполните следующие действия:
См. эту проблему: https://github.com/yeszao/dnmp/issues/91.
Использование cron для периодических задач в Docker.
Время в контейнерах настраивается в файле .env через переменную TZ. Список поддерживаемых часовых поясов см. в списке часовых поясов Википедии или в списке часовых поясов, поддерживаемых PHP, на официальном сайте PHP.
Существует два случая:
Первый случай — в коде PHP.
// Подключение к MySQL
$dbh = new PDO('mysql:host=mysql;dbname=mysql',
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )