首页 文章

使用Docker运行Laravel artisan命令时连接被拒绝

提问于
浏览
2

我在Docker中运行Laravel 5.4 . 这是我的 docker-compose.yml 文件:

version: '2'

services:
  app:
    container_name: laravel_app
    image: webdevops/php-apache-dev:ubuntu-16.04
    links:
      - mysql
    depends_on:
      - mysql
    ports:
      - 8888:80
    volumes:
      - .:/app
    environment:
      docker: 'true'
      WEB_DOCUMENT_ROOT: '/app/public'
      WEB_NO_CACHE_PATTERN: '\.(.*)$$'
      working_dir: '/app'
  mysql:
    image: mariadb:latest
    ports:
      - 8889:80
    environment:
      MYSQL_ROOT_PASSWORD: 'dev'
      MYSQL_DATABASE: 'dev'
      MYSQL_USER: 'dev'
      MYSQL_PASSWORD: 'dev'

这是我的 .env 文件的相关部分:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=8889
DB_DATABASE=dev
DB_USERNAME=dev
DB_PASSWORD=dev

我能够看到Laravel欢迎页面 - 事情的一面有效 . 但是,当我运行 php artisan migrate 时,我收到此错误:

SQLSTATE [HY000] [2002]连接被拒绝(SQL:select * from information_schema.tables,其中table_schema = dev和table_name = migrations)

我试图摆弄 .env 文件中的 hostport 参数 .

2 回答

  • 2

    首先编辑你的 docker-compose.yml .

    mysql:
        image: mariadb:latest
        ports:
          - 8889:3306
    

    之后在 .env 中设置正确的DB端口 .

    您的数据库端口错误 . 您正在尝试连接docker中的公开端口 . 在这种情况下,您应该在 .env 中使用 DB_PORT=3306 .

  • 1

    如果您不想像在@ kotapeter的答案中那样设置数据库端口,您可以通过运行以下方式通过docker调用artisan:

    $ docker exec -it <name of container> php artisan migrate
    

    看着你的 docker-compose.yml ,你的容器可能是 laravel_app_app_1 ,但你可以通过运行 docker ps 来检查

相关问题