Докер создать образ больше не работает laravel

У меня есть приложение laravel, которое я разрабатываю локально, используя докер для создания контейнеров.

Это работало месяцами, я не разрабатывал приложение последние 2 месяца, но сегодня, когда я запускаю контейнеры, я больше не могу связываться с экземпляром php с экземпляром базы данных. Я могу подключиться к серверу, используя свой адрес localhost на машине, но когда я пытаюсь сделать что-либо в контейнере php (например, пользователь входит в приложение), возникает отказ в соединении.

Итак, чтобы подвести итог, я могу выполнить миграцию php artisan с моего ноутбука, и таблицы будут созданы, затем я просматриваю сайт (localhost: 8080) и отображается экран входа в систему, затем я пытаюсь войти в систему и получаю следующую ошибку:

Illuminate \ Database \ QueryException (2002) SQLSTATE[HY000] [2002] Connection refused (SQL: select * from users where email = [email protected] and users.deleted_at is null limit 1)

Я включил все свои файлы ниже

.env

APP_NAME=Laravel
APP_ENV=local
APP_KEY=**REMOVED**
APP_DEBUG=true
APP_URL=https://localhost:8443
APP_CDN=true

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=33061
DB_DATABASE=dockerApp
DB_USERNAME=root
DB_PASSWORD=secret

docker-compose.yml

version: '2'

services:
    nginx:
      image: nginx:1.13.12
      ports:
        - "8443:443"
        - "8080:80"
      volumes:
        - ./:/var/www
        - ./nginxconf:/etc/nginx/conf.d
        - ./ssl-cert:/etc/nginx/certs
      working_dir: /var/www
      links:
        - php
    php:
        build:
            context: ./
            dockerfile: app.docker
        volumes:
            - ./:/var/www
        links:
            - db
        environment:
            - "DB_PORT=3306"
            - "DB_HOST=db"
    db:
        image: mysql:5.7
        environment:
            - "MYSQL_ROOT_PASSWORD=secret"
            - "MYSQL_DATABASE=dockerApp"
        ports:
            - "33061:3306"

app.docker

FROM php:7-fpm

RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client \
    && docker-php-ext-install pdo_mysql \
    && pecl install mcrypt-1.0.1 docker-php-ext-enable mcrypt

WORKDIR /var/www

vhost.conf

server {
    listen 80;
    root /var/www/public;

    location / {
        try_files $uri /index.php?$args;
    }
    location ~\.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

server {
    listen 443;
    ssl on;
    root /var/www/public;

    ssl_certificate     /var/www/ssl-cert/server.crt;
    ssl_certificate_key /var/www/ssl-cert/server.key;
    ssl_password_file   /var/www/ssl-cert/passwords.txt;
    ssl_client_certificate /var/www/ssl-cert/ca.crt;
    ssl_verify_client on;
}

docker создает собственную внутреннюю сеть, которую вы можете попробовать и использовать для подключения к образу БД. Измените значения файла .envDB_HOST=db, DB_PORT=3306

Angad Dubey 21.10.2018 14:44

@AngadDubey, когда я это делаю, он работает для входа в систему, но после этого я больше не могу подключаться к нему локально, поэтому я не могу выполнять какие-либо миграции и т. д.

Neo 21.10.2018 14:51

вы должны запускать свои миграции в контейнере докеров - docker-compose run <имя контейнера> php artisan migrate

Angad Dubey 21.10.2018 14:53

@AngadDubey Я всегда запускал их локально, и это всегда работало до недавнего времени

Neo 21.10.2018 14:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
4
181
0

Другие вопросы по теме