【问题标题】:How to add Redis to a Docker Container?如何将 Redis 添加到 Docker 容器中?
【发布时间】:2017-07-11 12:48:46
【问题描述】:

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

【问题讨论】:

    标签: ruby docker redis


    【解决方案1】:

    把它分成两个容器。您可以使用 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启动这两个服务。

    【讨论】:

    【解决方案2】:

    There can be only one CMD 命令在您的Dockerfile 中。此外,您想要做的是little more complex,比您想象的要多。

    附:以上是stackoverflow链接。

    【讨论】:

    • 似乎“Docker 方式”是拥有 2 个容器。更简单更容易。
    • 是的,如果您没有任何严重的并发症,这是正确且最简单的方法。
    猜你喜欢
    • 2019-09-19
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    相关资源
    最近更新 更多