#php #laravel #docker #ldap #laradock
#php #ларавель #docker #ldap #laradock #laravel
Вопрос:
Я настроил docker с помощью laradock.
Я использую следующий пакет
"adldap2/adldap2-laravel": "^2.1"
Я получаю следующую ошибку:
Call to undefined function Adldapldap_explode_dn()
Должен ли я войти в свое рабочее пространство docker и попытаться установить его?
docker-compose exec workspace bash
Как я должен его установить?
Кажется, я не могу найти пакет php7.0-ldap из apt-get или apt-cache…
Можно ли включить это через docker-compose или каким-либо образом отредактировав один из файлов docker? (php-fpm/Dockerfile-70 ?
РЕДАКТИРОВАТЬ: (DockerFile-70 полное содержимое с предоставленным решением)
#
#--------------------------------------------------------------------------
# Image Setup
#--------------------------------------------------------------------------
#
# To edit the 'php-fpm' base Image, visit its repository on Github
# https://github.com/LaraDock/php-fpm
#
# To change its version, see the available Tags on the Docker Hub:
# https://hub.docker.com/r/laradock/php-fpm/tags/
#
FROM laradock/php-fpm:7.0--1.2
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
#
#--------------------------------------------------------------------------
# Mandatory Software's Installation
#--------------------------------------------------------------------------
#
# Mandatory Software's such as ("mcrypt", "pdo_mysql", "libssl-dev", ....)
# are installed on the base image 'laradock/php-fpm' image. If you want
# to add more Software's or remove existing one, you need to edit the
# base image (https://github.com/LaraDock/php-fpm).
#
#
#--------------------------------------------------------------------------
# Optional Software's Installation
#--------------------------------------------------------------------------
#
# Optional Software's will only be installed if you set them to `true`
# in the `docker-compose.yml` before the build.
# Example:
# - INSTALL_ZIP_ARCHIVE=true
# - ...
#
#####################################
# xDebug:
#####################################
ARG INSTALL_XDEBUG=false
RUN if [ ${INSTALL_XDEBUG} = true ]; then
# Install the xdebug extension
pecl install xdebug amp;amp;
docker-php-ext-enable xdebug
;fi
# Copy xdebug configration for remote debugging
COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
#####################################
# MongoDB:
#####################################
ARG INSTALL_MONGO=false
RUN if [ ${INSTALL_MONGO} = true ]; then
# Install the mongodb extension
pecl install mongodb amp;amp;
docker-php-ext-enable mongodb
;fi
#####################################
# ZipArchive:
#####################################
ARG INSTALL_ZIP_ARCHIVE=false
RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then
# Install the zip extension
pecl install zip amp;amp;
docker-php-ext-enable zip
;fi
#####################################
# PHP Memcached:
#####################################
ARG INSTALL_MEMCACHED=false
RUN if [ ${INSTALL_MEMCACHED} = true ]; then
# Install the php memcached extension
curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz"
amp;amp; mkdir -p memcached
amp;amp; tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1
amp;amp; (
cd memcached
amp;amp; phpize
amp;amp; ./configure
amp;amp; make -j$(nproc)
amp;amp; make install
)
amp;amp; rm -r memcached
amp;amp; rm /tmp/memcached.tar.gz
amp;amp; docker-php-ext-enable memcached
;fi
#####################################
# PHP Aerospike:
#####################################
ARG INSTALL_AEROSPIKE_EXTENSION=false
ENV INSTALL_AEROSPIKE_EXTENSION ${INSTALL_AEROSPIKE_EXTENSION}
# Copy aerospike configration for remote debugging
COPY ./aerospike.ini /usr/local/etc/php/conf.d/aerospike.ini
RUN if [ ${INSTALL_AEROSPIKE_EXTENSION} = true ]; then
# Install the php aerospike extension
curl -L -o /tmp/aerospike-client-php.tar.gz "https://github.com/luciano-jr/aerospike-client-php/archive/ master.tar.gz"
amp;amp; mkdir -p aerospike-client-php
amp;amp; tar -C aerospike-client-php -zxvf /tmp/aerospike-client-php.tar.gz --strip 1
amp;amp; (
cd aerospike-client-php/src/aerospike
amp;amp; phpize
amp;amp; ./build.sh
amp;amp; make install
)
amp;amp; rm /tmp/aerospike-client-php.tar.gz
;fi
#####################################
# Opcache:
#####################################
ARG INSTALL_OPCACHE=false
RUN if [ ${INSTALL_OPCACHE} = true ]; then
docker-php-ext-install opcache amp;amp;
docker-php-ext-enable opcache
;fi
# Copy opcache configration
COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini
#####################################
# LDAP:
#####################################
RUN
apt-get update amp;amp;
apt-get install libldap2-dev -y amp;amp;
#rm -rf /var/lib/apt/lists/* amp;amp;
docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ amp;amp;
docker-php-ext-install ldap
#
#--------------------------------------------------------------------------
# Final Touch
#--------------------------------------------------------------------------
#
ADD ./laravel.ini /usr/local/etc/php/conf.d
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
RUN rm -r /var/lib/apt/lists/*
RUN usermod -u 1000 www-data
WORKDIR /var/www/laravel
CMD ["php-fpm"]
EXPOSE 9000
Ответ №1:
Проверьте это:
https://github.com/docker-library/php/issues/75
В принципе, вам нужно это в вашем файле докера php-fpm:
RUN
apt-get update amp;amp;
apt-get install libldap2-dev -y amp;amp;
rm -rf /var/lib/apt/lists/* amp;amp;
docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ amp;amp;
docker-php-ext-install ldap
Комментарии:
1. Я обновил php-fpm / Dockerfile-70 с помощью сниппента. Кажется, rm -rf /var/lib/apt/lists/* amp;amp; вызывает ошибку. Это не позволяет мне создавать php-fpm после редактирования:: rm: не удается удалить ‘/var /lib /apt /lists /*’: Нет такого файла или каталога
2. @koalaok Вы можете безопасно удалить эту строку, так как это просто задача очистки, чтобы уменьшить размер. Не совсем уверен, почему это не сработает. Как выглядит ваш полный файл Dockerfile?
3. Это обычный Dockerfile-70 в последней версии репозитория laradock git. В любом случае, я заметил, что эта строка уже присутствует в нескольких строках ниже. «Последний штрих». Я вставлю Dockerfile 70 в свой вопрос в формате редактирования