我的问题是在docker中为ruby sinatra运行cron和rackup服务时。
文件cronjobs
* * * * * cd /app && rake parser >> cron.log 2>&1
文件Dockerfile
RUN apk update && apk upgrade
RUN apk add --update build-base \
mariadb-dev bash dcron
RUN gem install bundler
WORKDIR /app
COPY Gemfile .
RUN bundle install && bundle clean
COPY . /app
COPY cronjobs /etc/crontabs/root
EXPOSE 80
CMD crond -f && rackup --host 0.0.0.0 -p 80
运行docker时只有一项服务可用
答案 0 :(得分:1)
Docker容器正在运行,而其中的主进程正在运行。因此,如果您想在docker容器中运行两个服务,则其中之一必须在后台模式下运行。
因此,CMD
层应为以下内容:
CMD ( crond -f & ) && rackup --host 0.0.0.0 -p 80