Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何解决此错误消息';未找到合适的服务器(`serverSelectionTryOnce`set):[在Lumen上解析';db';]失败?_Php_Laravel_Mongodb_Docker_Lumen - Fatal编程技术网

Php 如何解决此错误消息';未找到合适的服务器(`serverSelectionTryOnce`set):[在Lumen上解析';db';]失败?

Php 如何解决此错误消息';未找到合适的服务器(`serverSelectionTryOnce`set):[在Lumen上解析';db';]失败?,php,laravel,mongodb,docker,lumen,Php,Laravel,Mongodb,Docker,Lumen,从本地计算机运行此命令时: docker-compose exec php php ../artisan migrate 我收到以下错误消息: In functions.php line 431: No suitable servers found (`serverSelectionTryOnce` set): [Fai

从本地计算机运行此命令时:

docker-compose exec php php ../artisan migrate
我收到以下错误消息:

In functions.php line 431:
                                                                                     
  No suitable servers found (`serverSelectionTryOnce` set): [Failed to resolve 'db'] 
本地计算机上的环境代码结构如下所示:

.
+-- _images
|   +-- _php
|   +-- +-- _app
|   +-- +-- composer.json
|   +-- +-- Dockerfile
|   +-- +-- .env
|   +-- +-- _config/database.php
+-- docker-compose.yml
+-- Dockerfile
Dockerfile(根文件夹中的文件)代码:

docker-compose.yml

version: '3.5'
services:
    nginx:
      build: images/nginx
      command: nginx -g "daemon off;"
      links:
        - php
      ports:
        - "80:80"
      volumes:
        - ./images/php/app/public:/var/www/html/app/public
      networks:
        - db-net

    php:
      build: images/php
      volumes:
        - ./images/php:/var/www/html
      working_dir: /var/www/html/app/public
      command: php-fpm
      links:
        - db
        - mongo
        - cache
      ports:
        - "9000:9000"
      environment:
        APP_ENV: local
        APP_DEBUG: 'true'
        APP_KEY: SomeRandomKey!!!
        APP_LOCALE: en
        APP_FALLBACK_LOCALE: en
        DB_CONNECTION: mysql
        DB_HOST: db
        DB_DATABASE: ${DB_DATABASE}
        DB_USERNAME: ${DB_USERNAME}
        DB_PASSWORD: ${DB_PASSWORD}
        MEMCACHED_HOST: cache
        CACHE_DRIVER: memcached
      networks:
          - db-net
    db:
      image: mysql:8
      command: --default-authentication-plugin=mysql_native_password # needed as of mysql 8
      ports:
        - "3306:3306"
      environment:
        MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
        MYSQL_DATABASE: ${MYSQL_DATABASE}
        MYSQL_USER: ${MYSQL_USERNAME}
        MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      networks:
          - db-net

    cache:
      image: memcached:1.6-alpine
      networks:
          - db-net

    mongo:
      image: "mongo:3-stretch"
      container_name: mongodb-api
      ports:
        - "27017:27017"
      networks:
        - db-net

    mongo-express:
      image: "mongo-express:latest"
      container_name: mongo-express-api
      ports:
        - "8081:8081"
      networks:
        - db-net

networks:
  db-net:
    external:
      name: db_network
Dockerfile(php下的文件)

database.php

<?php

return [
    'default' => 'mongodb',
    'connections' => [
        'mongodb' => [
            'driver' => 'mongodb',
                'host' => env('DB_HOST', 'mongo'),
                'port' => env('DB_PORT', 27017),
                'database' => env('admin'),
                'username' => env('admin'),
                'password' => env('123'),
                'options' => [
                    'database' => 'admin' // sets the authentication database required by mongo 3
                ]
            ],
        ],
        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', 3306),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => env('DB_CHARSET', 'utf8mb4'),
            'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
            'prefix' => env('DB_PREFIX', ''),
            'strict' => env('DB_STRICT_MODE', true),
            'engine' => env('DB_ENGINE', null),
            'timezone' => env('DB_TIMEZONE', '+00:00'),
        ],
        'migrations' => 'migrations',
    ];
如何解决此错误

注意:直接在服务器上运行此命令时,我收到相同的错误

如果需要更多信息,请告诉我

FROM php:7.2-fpm-alpine
# lumen packages
RUN docker-php-ext-install tokenizer mysqli pdo_mysql

RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.6/main' >> /etc/apk/repositories
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.6/community' >> /etc/apk/repositories
RUN apk update
RUN apk add mongodb=3.4.4-r0

RUN mongo --version

# memcached
ENV MEMCACHED_DEPS zlib-dev libmemcached-dev cyrus-sasl-dev
RUN apk add --no-cache --update libmemcached-libs zlib
RUN set -xe \
    && apk add --no-cache --update --virtual .phpize-deps $PHPIZE_DEPS \
    && apk add --no-cache --update --virtual .memcached-deps $MEMCACHED_DEPS \
    && pecl install memcached \
    && echo "extension=memcached.so" > /usr/local/etc/php/conf.d/20_memcached.ini \
    && rm -rf /usr/share/php7 \
    && rm -rf /tmp/* \
    && apk del .memcached-deps .phpize-deps

# Installing PECL
RUN apk --no-cache add php7-pear php7-dev gcc musl-dev make

# xdebug - Should only run on local and dev enviorments
RUN apk add --no-cache $PHPIZE_DEPS \
    && pecl install xdebug-2.9.8 \
    && docker-php-ext-enable xdebug

# Install mongodb php lib via PECL and enable it in php.ini
RUN pecl install mongodb \
    &&  echo "extension=mongodb.so" > /usr/local/etc/php/conf.d/mongodb.ini

# Show the mongo db installed version
RUN php -i | grep mongo

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
<?php

return [
    'default' => 'mongodb',
    'connections' => [
        'mongodb' => [
            'driver' => 'mongodb',
                'host' => env('DB_HOST', 'mongo'),
                'port' => env('DB_PORT', 27017),
                'database' => env('admin'),
                'username' => env('admin'),
                'password' => env('123'),
                'options' => [
                    'database' => 'admin' // sets the authentication database required by mongo 3
                ]
            ],
        ],
        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', 3306),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => env('DB_CHARSET', 'utf8mb4'),
            'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
            'prefix' => env('DB_PREFIX', ''),
            'strict' => env('DB_STRICT_MODE', true),
            'engine' => env('DB_ENGINE', null),
            'timezone' => env('DB_TIMEZONE', '+00:00'),
        ],
        'migrations' => 'migrations',
    ];
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->name();
            $table->string('email')->unique();
            $table->string('password', 60);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}
APP_NAME=Lumen
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
APP_TIMEZONE=UTC

LOG_CHANNEL=stack
LOG_SLACK_WEBHOOK_URL=

DB_CONNECTION=mongodb
DB_HOST=mongo
DB_PORT=27017
DB_DATABASE=admin
DB_USERNAME=admin
DB_PASSWORD=123

CACHE_DRIVER=file
QUEUE_CONNECTION=sync