如何使用dockerfile在后台运行sidekiq

问题描述 投票:0回答:1

如何使用 Dockerfile 在单独的容器中运行 sidekiq 和 Rails。在本地,我使用 docker compose 来构建容器,因为它为应用程序、sidekiq 和 redis 创建了 3 个独立的容器,但是当我部署使用 Dockerfile 的应用程序时,sidekiq 和 Rails 在同一容器中运行,而 sidekiq 在前台运行并处理作业。如何让sidekiq在后台运行?

Sidekiq 版本 - 6.3.1 | Rails 版本 - 6.0.3 |红宝石 - 2.7


Dockerfile:

FROM ruby:2.7

RUN mkdir -p /src

ENV RAILS_ENV="development"

COPY Gemfile* /src/

RUN apt-get update && \
    apt-get install -y unzip && \
.
.
.
.
.

RUN bundle install

RUN mkdir tmp

RUN chmod +x bin/docker-entrypoint.sh

CMD bin/docker-entrypoint.sh

bin/docker-entrypoint.sh :

#!/bin/bash
set -e

rake db:create

rake db:migrate

bundle exec sidekiq -e "${RAILS_ENV}" -C config/sidekiq.yml & bundle exec rails s
sidekiq
1个回答
1
投票

最好的方法是在与 Rails 进程不同的容器中运行 Sidekiq。您可以使用相同的 Dockerfile,只需更改入口点,例如:

if [ "$1" = "sidekiq" ]; then
  bundle exec sidekiq
else
  exec "$@"
fi

这样,无论是否使用 compose,都可以轻松在本地运行,并且可以随时部署,只需将标志传递到入口点即可。

© www.soinside.com 2019 - 2024. All rights reserved.