ruby-on-rails - 我可以运行我的 rake 作业吗:在运行我的 rails 服务器时在同一个 docker 容器中工作?
问题描述
我的码头工人撰写文件
web:
build: .
command: bundle exec rails s -b 0.0.0.0 -p 3000
volumes:
- .:/app
ports:
- "3000:3000"
links:
- db
- db-test
depends_on:
- db
- db-test
然后我通常使用
docker-compose exec web bash
然后运行
rake jobs:work
是否可以同时运行这两件事并跳过最后一步?
解决方案
如果您想在同一个代码库上执行两个长时间运行的任务,则可以在同一个映像上运行两个单独的容器。在 Docker Compose 语法中,看起来像
version: '3'
services:
db: { ... }
db-test: { ... }
web:
build: .
command: bundle exec rails s -b 0.0.0.0 -p 3000
ports:
- "3000:3000"
depends_on:
- db
- db-test
worker:
build: .
command: bundle exec rake jobs:work
depends_on:
- db
- db-test
在一个容器中运行多个任务有点棘手,通常不推荐。例如,您在评论中到达的表单将 Rails 服务器作为后台任务启动,然后将 worker 设为主容器进程;如果由于某种原因主 Rails 应用程序死了,Docker 不会注意到这一点,如果 worker 死了,它会带上 Rails 应用程序。
推荐阅读
- python - 在 Python 中不显示输入
- python - 从 Flightradar24 抓取数据
- visual-studio-code - Is there a way to save all files, commit and upload in one command in Visual Studio Code
- google-compute-engine - GCE 实例停止工作 1 小时
- c++ - 'const' 关键字是如何工作的?
- java - Javax 持久性在生产级别将 IDENTITY 更改为 SEQUENCE
- python-2.x - 理解 Python 2.x 中的深拷贝和浅拷贝
- pip - Airflow 1.10 安装失败
- javascript - Javascript 不会影响 HTML 元素,除非它低于它
- java - 如何解决Android中左右导航视图应用崩溃的问题?