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