当前位置: 首页 > 面试题库 >

如何在Docker中运行Redis服务器和另一个应用程序?

楮庆
2023-03-14
问题内容

我创建了一个在Docker容器中运行的Django应用程序。我需要在Django应用程序中创建一个线程,因此我将Celery和Redis用作Celery数据库。如果我在docker映像(Ubuntu
14.04)中安装Redis:

RUN apt-get update && apt-get -y install redis-server
RUN pip install redis

Redis服务器未启动:Django应用程序引发异常,因为端口6379上的连接被拒绝。如果我手动启动Redis,它将正常工作。

如果我使用以下命令启动Redis服务器,它将挂起:

RUN redis-server

如果我尝试调整上一行,那么它也不起作用:

RUN nohup redis-server &

所以我的问题是:有没有一种方法可以在后台启动Redis并在Docker容器重启时使其重启?

Docker“最后一个命令”已经用于:

CMD uwsgi --http 0.0.0.0:8000 --module mymodule.wsgi

问题答案:

RUN命令仅添加新的图像层。它们不会在运行时执行。仅在映像构建期间。

使用CMD代替。您可以通过将多个命令外部化为shell脚本来组合多个命令,这些脚本由调用CMD

CMD start.sh

start.sh脚本中,编写以下内容:

#!/bin/bash
nohup redis-server &
uwsgi --http 0.0.0.0:8000 --module mymodule.wsgi


 类似资料:
  • Docker“最后一个命令”已经用于:

  • 非常简单,没有任何修饰,redis是使用一个连接附加到一个web应用程序。 创建一个redis docker容器 首先,我们先为redis创建一个Dockerfile FROM ubuntu:12.10 RUN apt-get update RUN apt-get -y install redis-server EXPOSE 6379 ENT

  • 问题内容: 这个问题是我继续研究Docker的一部分,并且在某些方面跟进了我先前的问题之一。我现在已经了解了如何通过将一堆Docker容器链接在一起来获得完整的应用程序堆栈(实际上是微型VPS)。例如,可以创建一个堆栈,为Apache+ PHP5提供一堆扩展名+ Redis + MemCached+MySQL,它们都在Ubuntu上运行,无论是否带有附加数据容器,都可以轻松地序列化用户数据。 一切

  • 问题内容: 目前,我在需要连接到camunda的docker容器内运行一个node.js应用程序,该容器在另一个容器中运行。 我使用以下命令启动容器 这两个应用程序现在都在运行,我可以通过在端口8000上导航到主机的IP来访问camunda,运行wget 还会返回camunda页面。使用和键入我的应用程序容器时,我无法访问camunda。相反,我得到以下错误: 当我使用将我的应用程序容器链接到ca

  • Grpc服务器似乎是使用Netty实现的。是否有使用其他实现的方法?

  • 问题内容: 如果我有另一个正在运行的apache / web-server实例,我用所有这些命令痛苦地分析了昨天的全部内容 我没有在端口8080上运行的Apache或任何其他服务器的另一个实例。 但是,XAMPP给了我这个: 我该怎么办? 我也将httpd.conf编辑为LISTEN到端口9876,并且仍然相同。 问题答案: 如果: 然后,也许有一个锁定文件位于启动要检查的地方?这些通常在/ va