当前位置: 首页 > 知识库问答 >
问题:

如何将Redis添加到Docker容器?

慕冠宇
2023-03-14

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

共有2个答案

东门彬
2023-03-14

Dockerfile中只能有一个CMD命令。此外,你想做的事情比你想象的要复杂一些。

注意:以上是堆叠溢出链接。

章远航
2023-03-14

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

version: '2'

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

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

 类似资料:
  • 问题内容: 我有一个运行着某些进程(uwsgi和celery)的docker容器。我想为这些进程以及它们都属于的工作组创建一个celery用户和uwsgi用户,以便分配权限。 我尝试将和添加到我的Dockerfile中,但这会引起问题,因为这些命令会提示您输入(我已在下面的构建中发布了响应)。 将用户添加到Docker容器以便为在该容器中运行的工作人员设置权限的最佳方法是什么? 我的Docker映

  • 问题内容: 我有一个Docker容器,它是通过在Ubuntu上安装Docker并执行以下操作而创建的: 我立即开始安装Java和其他一些工具,花了一些时间并通过以下方式停止了该容器 然后,我想添加一个卷,并意识到这并不像我想象的那样简单。如果我使用了,那么我将得到一个全新的容器,因此我将安装Java并做我已经做过的事情,然后再到达一个具有已安装卷的容器。 有关从主机安装文件夹的所有文档似乎都暗示了

  • 在部署时,我面临一个“CrashLoopBackoff”错误。Net核心API和

  • 本文向大家介绍Docker 将容器添加到网络,包括了Docker 将容器添加到网络的使用技巧和注意事项,需要的朋友参考一下 示例 此命令将myAwesomeApp-1容器连接到app-backend网络。将容器添加到用户定义的网络时,嵌入式DNS解析器(它不是功能齐全的DNS服务器,并且不可导出)允许网络上的每个容器解析同一网络上的其他容器。此简单的DNS解析器在默认网桥bridge网络上不可用。

  • 问题内容: 我用mysql启动了一个docker容器。 实际上,我想创建一个新用户和一个新表-我必须在MySQL Workbench中进行操作。 这是我的docker run命令: 我的问题是: 如何添加创建用户和表的sql启动脚本(仅用于容器的首次启动)? 我必须执行哪些步骤? 有人可以帮我吗? 非常感谢! 问题答案: 你需要通过创建用户,ENV VAR和使用量与启动脚本映射目录(,,) 解释来

  • 我创建了一个Docker容器,只需在Ubuntu上安装Docker并执行以下操作: 我立即开始安装Java和一些其他工具,花了一些时间与它,并停止了容器通过 然后我想增加一个卷,并意识到这并不像我想的那样简单。如果我使用,那么我最终会得到一个新的容器,因此我必须安装Java并执行之前已经执行的操作,只需要到达一个具有已装入卷的容器。 所有关于从主机装入文件夹的文档似乎都暗示装入卷是创建容器时可以完