首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从码头管理员访问主机redis数据库

从码头管理员访问主机redis数据库
EN

Stack Overflow用户
提问于 2016-08-17 04:11:45
回答 2查看 2K关注 0票数 0

我正试图通过我的码头管理员管理员连接到主机redis数据库。

在我的dockerfile中,我有redis作为一个要求,它得到安装pip安装redis,而映像是使用该坞文件构建的。之后,我将使用以下命令实例化conatiner

代码语言:javascript
复制
sudo docker run -p 6543:6543 your_image_name

我的app.py如下

代码语言:javascript
复制
from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
import redis

def hello(request):
    ds_id = '4000'
    r_server = redis.Redis(unix_socket_path='/tmp/redis.sock')
    result = r_server.set('foo','11')
    return Response(result)

问题是,在开始安装Redis时,不会生成redis.sock文件,因此当我试图连接时会产生错误。

Dockerfile:

代码语言:javascript
复制
FROM     centos:latest

# load base packages w/ yum
RUN yum install -y git gcc libffi-devel openssl-devel python-devel postgresql-devel libxml2-devel libxslt-devel
COPY ./requirements.txt .

RUN curl https://bootstrap.pypa.io/get-pip.py >get-pip.py && \
    python get-pip.py && \
    rm get-pip.py &&\
    pip install -r requirements.txt

EXPOSE 6543

WORKDIR /app

COPY app /app

ENTRYPOINT [ "python" ]

CMD [ "app.py" ]

要求

代码语言:javascript
复制
pyramid
cornice
pyramid_chameleon
pyramid_beaker
pyramid_redis_sessions
pyRFC3339
oauthlib==0.7.2
oauth2client==1.5.2
pycrypto
PyOpenSSL
pymongo
SQLAlchemy
psycopg2
lxml
gspread
jira
waitress
paste
PasteDeploy
redis

是否有其他方式连接到主机redis数据。

EN

回答 2

Stack Overflow用户

发布于 2016-08-17 05:05:57

  1. 如果在主机上运行了redis实例,并且只希望容器连接到该redis实例,那么只需要在容器中挂载套接字文件。例如,如果主机上的套接字文件的位置是/var/run/redis/redis.sock,并且您希望容器内的套接字文件的位置是/tmp/redis.sock,那么按如下方式启动容器: 数独坞运行\ -p 6543:6543 \ -v /var/ run /redis/redis.sock:/tmp/redis.sock \ your_image_name app.py
  2. 如果您想在容器中安装redis并运行python应用程序,请遵循以下步骤: 创建一个包含以下内容的文件start.sh: #!bin/bash /usr/bin/redis-server >/dev/null 2>&1 & /usr/bin/python $1 对文件app.py进行以下修改: r_server = redis.StrictRedis(host='localhost',port=6379,db=0) 对Dockerfile进行以下修改: 添加包epel-release 运行yum安装-y git gcc libffi-devel openssl-devel python-devel postgresql-devel libxml2-devel libxslt-devel 埃佩尔释放 安装redis 运行yum安装-y redis 将上面创建的脚本复制到/app目录: 复制start.sh /app运行chmod +x /app/start.sh 将入口点更改为start.sh ENTRYPOINT "/app/start.sh“
票数 0
EN

Stack Overflow用户

发布于 2016-08-17 06:27:41

您需要访问主机本地主机环回设备,所以您要做的是https://gist.github.com/EugenMayer/3019516e5a3b3a01b6eac88190327e7c#file-gistfile1-txt

创建此文件的

  • /Library/LaunchDaemons/docker.loopback.alias.plist
  • sudo chown root:staff /Library/LaunchDaemons/docker.loopback.alias.plist

你这个OSX。然后重新启动mac,然后可以从容器10.254.254.254 内部使用ip 访问主机回送设备,因此现在可以从容器中配置redist连接到10.254.254.254:6543,后者将使用您的osx主机redis。

理论:您需要创建这个回送别名,因为您不能在容器中使用localhost,因为这将获取容器本身的回送设备(他自己的回送设备),而不是主机的回送设备。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38987997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档