Привет! Буду благодарен за любую помощь. Есть тесты, написанные на JS + CypressIO. Тесты ранятся локально без единой проблемы и все проходят. Пытаюсь запихнуть все это в докер, но получаю ошибку
Cypress could not verify that the server set as your 'baseUrl' is running:
cypress |
cypress | > http://localhost:3000
cypress |
cypress | Your tests likely make requests to this 'baseUrl' and these tests will fail if you don't boot your server.
cypress |
cypress | Please start this server and then run Cypress again.
Все мои тесты внутри src/specs папки, что описано в cypress.json . Так как я новенький с Докером - прикрепляю и файлы, может там чего напартачил.
Dockerfile:
FROM cypress/browsers:chrome69
WORKDIR .
COPY package.json .
COPY package-lock.json .
ENV CI=1
RUN npm ci
RUN npx cypress verify
COPY /src .
COPY /cypress .
COPY cypress.json .
docker-compose.yml
version: '3'
services:
cypress:
image: cypress
build: .
container_name: cypress
command: npm run test
Перепробовал уже кучу вариантов, менял уже все, что мог) Может порт нужно прописать в docker-compose.yml?
Все правильно, по localhost лезет у себя в контейнере.
Так нужно указывать норм адресс, если тестируемое приложение в другом контейнере - указать можно название контейнера, но прежде надо пробросить сеть докера (приложение и тесты должны быть в одной сети). Если же Вы запускаете приложение и тесты одним докер-компоуз файлом, то можно указывать только название сервиса (services).
И еще пара советов:
Оптимизируйте Докерфайл, там у вас много Copy комманд, можно сделать одной скопировав все содержимое папки с тестами
Создайте папку для тестов в контейнере, так удобней чуть-что искать потом, чем когда все файлы и папки разбросаны в корневом каталоге
Сделайте volume в докер-компоуз, чтоб при изменениях не перебилдживать каждый раз контейнер
Как пример:
FROM cypress/browsers:chrome69
MKDIR /code
WORKDIR /code
COPY . ./
ENV CI=1
RUN npm ci
RUN npx cypress verify
version: '3'
services:
cypress:
container_name: cypress
build:
context: .
dockerfile: ./Dockerfile
volumes:
- ./:/code
command: npm run test
@Sando, а если используется volume с docker-compose, то нужно ли мне повторно все копировать еще на имедж?
Я же правильно понимаю, что volume монитрует мою локальную папку, чтобы она была доступна прям сразу с докер имеджа?
Что лучше использовать - volume или copy\add - для запуска тестов через CI?
Copy/add и volume у Вас на разных этапах.
Copy/add вы делаете в Dockerfile чтоб сбилдить имидж, в docker-compose volume используете для удобства, но docker-compose запускает уже сбилдженный имидж, скорей всего Вам просто на CI не понадобится docker-compose с volume ))