Redis не будет подключаться в Docker Dockerfile - PullRequest
0 голосов
/ 07 октября 2019

У меня проблема с 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)
    ],
],
...