Rails api Docker контейнер не запускается при запуске (не удалось загрузить команду: rails) при запуске с другими службами - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть несколько docker сервисов, запущенных вместе через docker -компонентный файл.

version: '3'
services:
  redis-server:
    image: redis
  scrapper:
    image: davidgeismar/artifacts-scrapper:without-db
    command: 'ruby ./scrap_sources.rb'
    environment:
      - REDIS_URL=redis://redis-server:6379/0
      - ARTIFACTS_ENV=docker_development
      - DATA_API_BASE=http://data_api:3000
    volumes:
      - .:/usr/src/artifacts_scrapper
    depends_on:
      - data_api
      - redis-server
  data_api:
    image: davidgeismar/artifacts_data_api:latest
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/artifacts_data_api
    environment:
      - RAILS_ENV=docker_development
      - SECRET_KEY_BASE=docker_development_secret
  sidekiq:
    build: .
    command: 'bundle exec sidekiq -r ./artifacts_scrapper.rb 2>&1 | tee ./log/sidekiq.log'
    volumes:
      - ./:/usr/src/artifacts_scrapper
    environment:
      - REDIS_URL=redis://redis-server:6379/0
      - ARTIFACTS_ENV=docker_development
      - DATA_API_BASE=http://data_api:3000
    depends_on:
      - redis-server
      - data_api

Проблема в том, что сервис data_api (rails api) работает нормально при запуске он один со своим docker файлом:

FROM ruby:2.6.3
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /artifacts_data_api
WORKDIR /artifacts_data_api
COPY Gemfile /artifacts_data_api/Gemfile
COPY Gemfile.lock /artifacts_data_api/Gemfile.lock
RUN gem install bundler
RUN gem install rails
RUN bundle install
COPY . /artifacts_data_api

# Add a script to be executed every time the container starts.
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["/usr/bin/entrypoint.sh"]
EXPOSE 3000

# Start the main process.
CMD ["rails", "server", "-b", "0.0.0.0"]

Однако, когда я запускаю его с другими службами через docker -компонентный файл: docker-compose pull && docker-compose up --build

я получаю:

data_api_1      | bundler: failed to load command: rails (/usr/local/bundle/ruby/2.6.0/bin/rails)
data_api_1      | Bundler::GemNotFound: Could not find concurrent-ruby-1.1.5 in any of the sources
data_api_1      |   /usr/local/bundle/gems/bundler-2.1.4/lib/bundler/spec_set.rb:86:in `block in materialize'

Я не представляю, как служба может работать нормально при запуске сама по себе, и не запускается при запуске при запуске через docker - создать с другими службами.

Вы можете найти проекты github здесь:

https://github.com/davidgeismar/artifacts-scrapper/tree/removing-db https://github.com/davidgeismar/artifacts_data_api

и docker концентратор:

https://hub.docker.com/repository/docker/davidgeismar/artifacts-scrapper

https://hub.docker.com/repository/docker/davidgeismar/artifacts_data_api

1 Ответ

0 голосов
/ 28 февраля 2020

Попробуйте запустить ваше изображение в Dockerfile с этим

CMD bundle exec rails s -p 3000 -b '0.0.0.0'

И удалите эту строку в своем docker -compose.yml под data_api

command: bundle exec rails s -p 3000 -b '0.0.0.0'
...