如何将 Redis 添加到 Docker 容器?

B S*_*ven 5 ruby 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"]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试添加 Redis 时:

# Redis
RUN         apt-get update && apt-get install -y redis-server
EXPOSE      6379
CMD         ["/usr/bin/redis-server"]
Run Code Online (Sandbox Code Playgroud)

Redis 似乎没有启动。

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

BMi*_*tch 5

将其分成两个容器。您可以使用 docker-compose 将它们带入公共网络。例如,这是一个示例 docker-compose.yml:

version: '2'

services:
  sinatraapp:
    image: sinatraapp:latest
    ports:
    - 9292:9292
  redis:
    image: redis:latest
Run Code Online (Sandbox Code Playgroud)

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