如何 运行 命令行中的命令 运行s 在 docker cli 上

how to run a command in command line which runs on docker cli

我想 运行 我的 rails rspec 测试 docker。如果我通过 docker 桌面打开 Cli 并写入

-bundle exec rspec 规范

我的测试运行。 我想要的是 运行 我用 makefile 中的命令测试我的图像和 运行 这个命令

我通常在构建 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 或 运行ning 容器,您可以安全地将 spec 目录包含在 .dockerignore 文件中以省略它从图像。

我能够 运行 使用代码进行测试

docker-compose 运行 ${IMAGE_NAME} bundle exec rspec spec