首页 > 解决方案 > docker compose image 不再工作 laravel

问题描述

我有一个使用 docker 在本地开发的 laravel 应用程序来创建容器。

这已经工作了几个月,过去两个月我没有开发过这个应用程序,但是今天当我启动容器时,我无法再从 php 实例到数据库实例进行通信。我可以使用机器上的本地主机地址连接到服务器,但是当我尝试在 php 容器上执行任何操作(例如,用户登录到应用程序)时,连接被拒绝。

总而言之,我可以从我的笔记本电脑执行 php artisan migrate 并创建表,然后查看站点(localhost:8080)并显示登录屏幕,然后尝试登录并收到以下错误:

Illuminate \ Database \ QueryException (2002) SQLSTATE[HY000] [2002] Connection denied (SQL: select * from userswhere email= test@email.com and users. deleted_atis 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;
}

标签: laraveldocker-compose

解决方案


推荐阅读