#docker #docker-compose #rspec
Вопрос:
Я хочу запустить свой тест rails rspec на докере. Если я открою Cli через рабочий стол docker и напишу
-спецификация rspec исполнителя пакета
мои тесты проходят. Что я хочу, так это запустить свои тесты с помощью команды в файле makefile, которая создает мой образ, и выполнить эту команду
Ответ №1:
Я смог запустить тесты с помощью кода
docker-создать запуск ${ИМЯ_ОБРАЗА} пакет спецификация exec rspec
Ответ №2:
Обычно я запускаю модульные тесты на хосте, прежде чем создавать контейнеры Docker. Я не включаю тесты внутри изображения.
gem install bundler:2.2.26
bundle exec rspec
docker build -t myapp:20210824
docker run -d -p 8000:8000 myapp:20210824
В контексте Makefile у меня были бы эти отдельные шаги, но я бы не хотел, чтобы они сильно зависели друг от друга.
.PHONY: rspec docker-build docker-run
all: rspec docker-build
run: rspec docker-run
DOCKER_TAG := latest
.bundled: Gemfile Gemfile.lock
bundle install
touch "$@"
rspec: .bundled
bundle exec rspec
docker-build: .docker-build
.docker-build:
docker build -t myapp:$(DOCKER_TAG) .
touch "$@"
docker-run: .docker-build
docker run -p 8000:8000 myapp:$(DOCKER_TAG)
clean:
rm -f .bundled .docker-build
Обратите внимание, что для этого пути не требуется docker exec
или работающий контейнер, и вы можете безопасно включить spec
каталог в .dockerignore
файл, чтобы исключить его из изображения.