You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Docker Compose运行Rails项目engine目录下的测试用例

解决方案

方案1:通过-w参数直接指定工作目录执行(推荐)

docker-compose exec原生支持-w/--workdir参数,可以直接指定命令的运行目录,不需要进入容器交互模式,命令写法如下:

docker-compose -f docker-compose.dev.yml exec -e "RAILS_ENV=test" -w /usr/src/app/my_engine myapp bundle exec rspec

说明:你的Compose配置中已经将宿主机的./my-app目录映射到容器内的/usr/src/app目录,因此容器内my_engine的完整路径为/usr/src/app/my_engine,直接对应即可。

方案2:拼接Shell命令执行

如果不想写全路径,也可以直接在exec中执行组合Shell命令,先切换目录再执行测试:

docker-compose -f docker-compose.dev.yml exec -e "RAILS_ENV=test" myapp sh -c "cd my_engine && bundle exec rspec"

如果你的Engine有独立的Gemfile,建议在命令中增加bundle install步骤避免依赖缺失:

docker-compose -f docker-compose.dev.yml exec -e "RAILS_ENV=test" myapp sh -c "cd my_engine && bundle install && bundle exec rspec"

方案3:预设专用测试服务(适合高频使用场景)

如果需要频繁执行Engine测试,可以直接在docker-compose.dev.yml中新增专属服务配置,简化后续调用:

myapp-engine-test:
  image: my-app
  build:
    dockerfile: Dockerfile-dev
    context: my-app
  volumes:
    - ./my-app:/usr/src/app
    - gem_data:/usr/local/bundle:cached
  depends_on:
    - db
    - redis
  user: root
  environment:
    - RAILS_ENV=test
  working_dir: /usr/src/app/my_engine
  command: bundle exec rspec

后续需要执行测试时只需要运行以下命令即可:

docker-compose -f docker-compose.dev.yml run --rm myapp-engine-test

内容的提问来源于stack exchange,提问作者guiddoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:45:00