如何将Redis添加到Docker容器?

时间:2017-02-21 18:23:35

标签: ruby docker redis

我有一个适用于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容器的好方法是什么?

2 个答案:

答案 0 :(得分:3)

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

version: '2'

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

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

答案 1 :(得分:1)

CMD中的

There can be only one Dockerfile命令。此外,你想做的是little more complex而不是你想象的。

P.S。以上是stackoverflow链接。