如何将Redis添加到Docker容器?

我有一个在Docker中正常工作的Sinatra应用程序:

# Image FROM ruby:2.3.3 RUN apt-get update && \ apt-get install -y net-tools # Install app ENV APP_HOME /app ENV HOME /root RUN mkdir $APP_HOME WORKDIR $APP_HOME COPY Gemfile* $APP_HOME/ RUN bundle install COPY . $APP_HOME # Configure App ENV LANG en_US.UTF-8 ENV RACK_ENV production EXPOSE 9292 # run the application CMD ["bundle", "exec", "rackup"] 

但是当我尝试添加Redis时:

 # Redis RUN apt-get update && apt-get install -y redis-server EXPOSE 6379 CMD ["/usr/bin/redis-server"] 

Redis似乎并不开始。

那么,将Redis添加到Ruby( FROM ruby:2.3.3 )Docker容器的好方法是什么?

拆分成两个容器。 您可以使用docker-compose将它们放在一个公共networking上。 例如,这里是一个示例docker-compose.yml:

 version: '2' services: sinatraapp: image: sinatraapp:latest ports: - 9292:9292 redis: image: redis:latest 

以上内容可以包含更多选项,并假设您的图像名称为sinatraapp:latest,将其更改为您所创build的图像。 您还需要更新您的sinatra应用程序,以通过主机名redis而不是localhost调用redis。 然后运行docker-compose up -d启动这两个服务。

Dockerfile 只能有一个 CMD命令。 此外,你想要做的是比你想象的更复杂一点。

PS以上是stackoverflow链接。