Могу ли я запустить свои грабли: работать в том же контейнере докера, что и мой сервер rails? - PullRequest
0 голосов
/ 09 ноября 2019

Файл создания моего докера

 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

Можно ли запуститьобе вещи и пропустить последний шаг?

1 Ответ

1 голос
/ 09 ноября 2019

Если у вас есть две длительные задачи, которые вы хотите выполнить в одной и той же базе кода, вы можете запустить два отдельных контейнера из одного и того же образа. В 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 в качестве фоновой задачи, а затем делает работника основным контейнерным процессом;если по какой-то причине основное приложение Rails умирает, Docker не заметит этого, а если рабочий умрет, он возьмет с собой приложение Rails.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...