У меня проблема с Docker и Redis. Я использую webdevops image.
Кстати, эта настройка Docker предназначена для моего проекта Laravel, который должен иметь Redis для работы с Laravel Horizon
Для сборки я запускаю
docker build -t crisdock:1.0 .
После успешной сборки я запускаю
docker run -p 8000:81 crisdock:1.0
Но ошибка
Predis \ Connection \ ConnectionException: соединение отклонено [tcp: //127.0.0.1: 6379] продолжает происходить. Я пытался выставить 6379
, но он все еще не работает.
Я использовал для настройки Redis с Laravel в большинстве моих проектов без Docker, и он работает нормально, но с Docker я неНе знаю, почему порт не открывается внутри контейнера.
Ниже моя Dockerfile
настройка
FROM webdevops/php-nginx:7.2
ENV WEB_DOCUMENT_ROOT=/app/project_path/public
# Install all the necessary libraries
RUN apt-get update
RUN apt-get -y -qq install \
apt-utils autoconf automake nginx \
libmcrypt-dev libmagickwand-dev
# Install necessary softwares
RUN apt-get install -y -qq \
build-essential cmake git systemd systemd-sysv vim wget yasm \
re2c file jpegoptim texinfo optipng pngquant gifsicle mercurial pkg-config \
redis-server logrotate
# Symbolic link necessary for php extensions
#RUN ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/local/include/
# Since PHP 7.2 mcrypt is not enabled by default
# so we need to include it manually
RUN yes | pecl install -s mcrypt-1.0.1
RUN yes | pecl install imagick
# Configure xDebug
RUN yes | pecl install -s xdebug-2.7.2 \
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini
# Install PHP Extensions
RUN docker-php-ext-enable xdebug opcache gd mcrypt imagick redis
# Clean up all the mess done by installing stuff
RUN apt-get autoremove --purge -y software-properties-common \
autoconf automake build-essential cmake mercurial texinfo \
&& apt-get clean \
&& apt-get autoclean \
&& echo -n > /var/lib/apt/extended_states \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /usr/share/man/?? \
&& rm -rf /usr/share/man/??_*
#*/configure php
COPY /docker/laravel/php-conf/local.ini /opt/docker/etc/php/conf.d/local.ini
COPY /docker/laravel/php-conf/lara-www.conf /opt/docker/etc/php/fpm/lara-www.conf
# Add workers for supervisor
COPY /docker/laravel/supervisor/horizon.conf /opt/docker/etc/supervisor.d/horizon-worker.conf
# Add crontab file in the cron directory
COPY docker/laravel/laravel-cron /opt/docker/etc/cron/laravel-cron
# Enable Gzip Compression
COPY docker/laravel/nginx/gzip.conf /opt/docker/nginx/conf.d/gzip.conf
#EXPOSE 6379
#RUN systemctl enable redis-server.service
WORKDIR /app
RUN git clone https://username:password@gitlab.host.com/project/project.git project_path
WORKDIR /app/project_path
COPY /docker/laravel/environment/local/.env .env
# Clean up folder which suppose not to be in git
RUN rm -rf docker/
RUN rm -rf vendor/
RUN rm -rf node_modules/
RUN composer install --no-interaction
RUN usermod -a -G www-data root
RUN usermod -a -G www-data application
WORKDIR /app
#RUN chown -R application. project_path
RUN chown -R application:www-data project_path
RUN find project_path -type d -exec chmod 775 {} \;
WORKDIR /app/project_path
RUN chgrp -R www-data storage bootstrap/cache
RUN chmod -R ug+rwx storage bootstrap/cache
EXPOSE 81
В Laravel, в файле database.php
'redis' => [
'client' => env('REDIS_DRIVER', 'predis'),
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
'options' => [
'parameters' => ['password' => env('REDIS_PASSWORD', null)],
'password' => env('REDIS_PASSWORD', null)
],
],