Maksclub
@Maksclub
maksfedorov.ru

Как запустить Acceptance тесты в Докер контейнере?

Есть такой
docker-compose.yml
version: '2'
services:
    nginx:
        build:
            context: ./
            dockerfile: docker/nginx.docker
        volumes:
            - ./:/var/www
            - ./docker/nginx/ssl:/etc/nginx/ssl
        ports:
            - "8080:80"
        links:
            - php-fpm
    php-fpm:
        build:
            context: ./
            dockerfile: docker/php-fpm.docker
        volumes:
            - ./:/var/www
        links:
            - mysql
        environment:
            - "DB_PORT=3306"
            - "DB_HOST=mysql"
    php-cli:
        build:
            context: ./
            dockerfile: docker/php-cli.docker
        volumes:
            - ./:/var/www
        links:
            - mysql
        environment:
            - "DB_PORT=3306"
            - "DB_HOST=mysql"
        tty: true
    mysql:
        image: mysql:5.7
        volumes:
            - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
            - ./docker/mysql/rodeo.sql:/docker-entrypoint-initdb.d/init.sql
            - ./docker/storage/mysql:/var/lib/mysql
        environment:
            - "MYSQL_ROOT_PASSWORD=secret"
            - "MYSQL_USER=app"
            - "MYSQL_PASSWORD=secret"
            - "MYSQL_DATABASE=app"
        ports:
            - "33061:3306"


Acceptance тесты настроены так
acceptance.suite.yml
actor: AcceptanceTester
modules:
    enabled:
        - PhpBrowser:
            url: http://localhost:8080
        - \Helper\Acceptance

и отлично работают локально или в Вагранте

Как запустить acceptance тесты с помощью Codeception?
unit-тесты отлично работают так:
docker-compose exec php-cli vendor/bin/codecept run

acceptance тесты, понятное дело, требуют доступности localhost:8080, а в контейнере такого нет
также приложению (старенькая CMS) нужен nginx, тк фронт-контроллер настроен в конфиге хоста


UPD: Правильно понимаю — не нужно Nginx и PHP 7.1 запускать в разных контейнерах?
  • Вопрос задан
  • 682 просмотра
Решения вопроса 2
@dimafanasev
в отдельном окне терминала запускаем сервис:
docker-compose exec php-cli php -S localhost:8080
в другом окне запускаем тесты:
docker-compose exec php-cli vendor/bin/codecept run
Ответ написан
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Мне лучшим решением видятся отдельные environments для локального прогона и docker-compose
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы