#docker #docker-compose #cypress #vue-cli
Вопрос:
Заранее скажу, что мои навыки докера невелики, поэтому приношу извинения, если ответ очевиден.
TLDR: Локальный веб-сайт, для доступа к которому мне нужно указать порт, как разрешить контейнеру docker доступ к этому веб-сайту?
Подробная информация:
У меня есть два веб-сайта, которые я запускаю локально:
- Первое-это localapp.company.com это сайт IIS
- Другой-это localnewapp.company.com это выполняется локально
vue-cli-service serve
и может быть доступно только путем указания портаlocalnewapp.company.com:8081
Я пытаюсь распараллелить наши тесты cypress с помощью контейнеров docker, где {IPv4_ADDRESS}
= Мой локальный IP-адрес, вот мой файл docker-compose.yml:
version: '3.2'
services:
cypress:
build: .
working_dir: /e2e
extra_hosts:
localnewapp.company.com: {IPv4_ADDRESS}
localapp.company.com: {IPv4_ADDRESS}
entrypoint: cypress run --headless --browser chrome --config-file ./cypress.json --record --key {KEY} --parallel --ci-build-id ${GITHUB_RUN_ID}
volumes:
- ./:/e2e
Cypress может запускать тесты, предназначенные для localapp, но не для localnewapp.
Используя интерфейс командной строки Docker, я попытался запустить:
curl localapp.company.com
который возвращает действительный ответ.curl localnewapp.company.com:8081
не удается подключиться.
Не знаю, куда отсюда идти. Любые предложения будут высоко оценены.
Редактировать: Просто чтобы уточнить, локально используется порт 8081 node.exe
, который обслуживает веб-сайт локально.
Ответ №1:
Вам нужно будет предоставить порт из своей cypress
службы
ports:
- HOST_PORT:CONTAINER_PORT
Нравится:
version: '3.2'
services:
cypress:
..
volumes:
- ./:/e2e
ports:
- 8081:8080
смотрите документацию
Комментарии:
1. Спасибо @dnltinney, я попробовал это и получаю следующую ошибку:
Error response from daemon: Ports are not available: listen tcp 0.0.0.0:8081: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
2. Скорее всего, порт
8081
используется. Вы можете проверить это с помощьюnc -zv localhost 8081
. Вы пробовали другой порт ?3. Порт 8081 используется localnewapp.company.com который запускается локально с помощью команды
vue-cli-service serve
, поэтому он используется сnode.exe