Ruby 如何将Redis添加到Docker容器?

Ruby 如何将Redis添加到Docker容器?,ruby,docker,redis,Ruby,Docker,Redis,我有一个Sinatra应用程序,在Docker中运行良好: # 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

我有一个Sinatra应用程序,在Docker中运行良好:

# 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(
来自Ruby:2.3.3
)Docker容器中的好方法是什么呢?

CMD
命令位于
Dockerfile
中。此外,你想做的事情比你想象的要多


注意:上面是stackoverflow链接。

将其拆分为两个容器。您可以使用docker compose将它们放到公共网络上。例如,这里有一个docker-compose.yml示例:

version: '2'

services:
  sinatraapp:
    image: sinatraapp:latest
    ports:
    - 9292:9292
  redis:
    image: redis:latest

上面可以为您的环境提供更多选项,并假设您的图像名称为sinatrapp:latest,将其更改为您构建的图像。您还需要更新sinatra应用程序,以通过主机名redis而不是本地主机调用redis。然后运行
docker compose up-d
来启动这两项服务。

是的,我发现这样做更简单、更好。对于未来的搜索者来说,
redis
键在这种情况下不起作用。看,似乎“Docker方式”将有2个容器。更简单,更容易。是的,如果你没有任何严重的并发症,这是正确和最简单的方法。