Laravel黄昏与码头工人组成

时间:2019-10-15 20:33:44

标签: php laravel-5 docker-compose

我正在为Laravel应用程序使用ocke-compose,而我的docker-compose.yml文件看起来像这样

version: '3'
services:
  nginx:
    build:
      context: ./
      dockerfile: docker/nginx.docker
    volumes:
      - ./apps/laravel/:/var/www
      - ./docker/nginx/ssl:/etc/nginx/ssl
    ports:
      - "8087:443"
    links:
      - php-fpm
    container_name: insystems-nginx
 php-fpm:
   build:
     context: ./
     dockerfile: docker/php-fpm.docker
     args:
       - UID=${UID}
   volumes:
     - ./apps/laravel/:/var/www
     - ./docker/php/custom.ini:/usr/local/etc/php/conf.d/custom.ini
   links:
     - mysql
   environment:
     - "DB_PORT=3306"
     - "DB_HOST=mysql"
     - "PHP_IDE_CONFIG=serverName=localhost"
   user: www-data
   container_name: insystems-php-fpm
php-cli:
  build:
    context: ./
    dockerfile: docker/php-cli.docker
    args:
      - UID=${UID}
  volumes:
    - ./apps/laravel/:/var/www
  links:
    - mysql
    - selenium
  environment:
    - "DB_PORT=3306"
    - "DB_HOST=mysql"
  tty: true
  user: www-data
  container_name: insystems-php-cli
mysql:
  image: mysql:5.7
  volumes:
    - ./storage/docker/mysql:/var/lib/mysql
  environment:
    - "MYSQL_ROOT_PASSWORD=secret"
    - "MYSQL_USER=app"
    - "MYSQL_PASSWORD=secret"
    - "MYSQL_DATABASE=app"
  ports:
    - "33061:3306"
  container_name: insystems-mysql
selenium:
  image: selenium/standalone-chrome:3.0.1-fermium

DuskTestCase.php看起来像这样

<?php

 namespace Tests;

 use Laravel\Dusk\TestCase as BaseTestCase;
 use Facebook\WebDriver\Chrome\ChromeOptions;
 use Facebook\WebDriver\Remote\RemoteWebDriver;
 use Facebook\WebDriver\Remote\DesiredCapabilities;

abstract class DuskTestCase extends BaseTestCase
{
 use CreatesApplication;

 public function setUp(): void
 {
    parent::setUp();
 }

/**
 * Prepare for Dusk test execution.
 *
 * @beforeClass
 * @return void
 */
public static function prepare()
{
    static::startChromeDriver();
}

/**
 * Create the RemoteWebDriver instance.
 *
 * @return \Facebook\WebDriver\Remote\RemoteWebDriver
 */
protected function driver()
{
    $options = (new ChromeOptions)->addArguments([
        '--disable-gpu',
        '--no-sandbox',
        '--window-size=1920,1080',
    ]);

    return RemoteWebDriver::create(
        'http://selenium:4444/wd/hub', DesiredCapabilities::chrome()->setCapability(
            ChromeOptions::CAPABILITY, $options
        )
          //->setCapability('acceptInsecureCerts', true) //@TODO for https test
    );
 }

 protected function baseUrl()
 {
    //@TODO 'http://$_SERVER["REMOTE_ADDR"]:8087'
    return 'http://localhost:8087'
 }
}

当我尝试从baseUrl()返回http://localhost:8087时,我的测试用例出现错误。 但是,如果返回http://172.19.0.1:8087(172.19.0.1是$ _SERVER [“ REMOTE_ADDR”])工作正常。

问题是我要使用本地主机而不是$ _SERVER [“ REMOTE_ADDR”]并知道原因。能给我一些建议,我需要做些什么才能将测试用例作为localhost运行。

1 个答案:

答案 0 :(得分:0)

尝试:

  selenium:
    image: selenium/standalone-chrome:3.0.1-fermium
    container_name: selenium

  php-fpm: 
   ....
    networks: 
      - app_network 
  selenium:
    image: selenium/standalone-chrome:3.0.1-fermium
    container_name: selenium
    networks:
      - app_network