невозможно запустить phpunit тесты для остальных API, обслуживаемых docker с php -fpm и nginx - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть файл docker -compose.yml, в котором я настраиваю следующую службу:

  • nginx (web) -> server_php_web_1
  • php -fpm ( php) -> server_php_php_1
  • mysql (db) -> server_php_db_1

My nginx обслуживают остальные API php через https и vhost: back- php .dev со связанными и рабочими сертификатами

извне docker я могу без проблем свернуть- php .dev

есть проверка каталога где я могу запустить тест при выполнении этой команды:

docker exec server_php_php_1 php /code/vendor/phpunit/bin /code/tests

Но когда я запускаю тесты, я получаю следующий результат:

GuzzleHttp\Exception\ConnectException: cURL error 6: Could not resolve host: back-php.dev

Я также попробовал следующее:

docker exec -it server_php_php_1 /bin/bash
curl server_php_web_1

И я могу успешно свернуть контейнер, работающий nginx, но как мне это сделать, если я хочу проверить следующий URL https://back-php.dev

Вот упрощенная структура docker -compose.yml:

services:
    web:
        image: nginx:latest
        ports:
            - "80:80"
            - "443:443"
        networks:
            - code-network
        extra_hosts:
            - "back-php.dev:127.0.0.1"
        links:
            - php

    php:
        build: ./
        networks:
            - code-network
    db:
        image: mariadb:10.1
        ports:
            - "3306:3306"
        environment:
            - MYSQL_ROOT_PASSWORD=root
        networks:
            - code-network

networks:
    code-network:
        driver: bridge

И файл Docker, связанный с php:

FROM phpdockerio/php74-fpm

RUN apt update
RUN apt install -y \
        php7.4-pdo \
        php7.4-json \
        php7.4-curl \
        php7.4-mbstring \
        php7.4-common \
        php7.4-mysql

RUN echo "ENV_NAME=dev" >> /etc/php/7.4/cli/php.ini

1 Ответ

1 голос
/ 18 февраля 2020

extra_hosts: - "back- php .dev: 127.0.0.1"

Создать отображение имени хоста "внутри контейнеров" не снаружи (хост).


Так что если вы чтобы получить доступ к вашему приложению "извне" (хосту), вам нужно создать новую запись на /etc/hosts и добавить

<container_ip> back-php.dev

Чтобы найти свой ip контейнера, выполните

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

Обновление1:

php:
  ...
  links:
    - back-php.dev:web
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...