【问题标题】:127.0.0.1:11211 is down party_manager | DalliError: No server available127.0.0.1:11211 已关闭DalliError:没有可用的服务器
【发布时间】:2018-07-27 01:50:00
【问题描述】:

我正在使用码头工人。每当我的应用程序尝试读取或写入缓存时,都会出现以下错误:

Cache read: send_otp_request_count_3
Dalli::Server#connect 127.0.0.1:11211
127.0.0.1:11211 failed (count: 0) Errno::ECONNREFUSED: 
Connection refused - connect(2) for "127.0.0.1" port 11211
DalliError: No server available

我的 Gemfile 有:

gem 'dalli'

我的 Dockerfile 是:

FROM ruby:2.3.6

RUN mkdir -p /railsapp
WORKDIR /railsapp

RUN apt-get update && apt-get install -y nodejs --no-install-recommends
RUN apt-get update && apt-get install -y mysql-client  --no-install-recommends

COPY Gemfile /railsapp/
COPY Gemfile.lock /railsapp/

RUN bundle install

COPY . /railsapp

EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]

我的 docker-compose.yml 文件是:

version: '3.3'

services:
  cache:
    image: memcached:1.4-alpine

  mysql:
    image: mysql
    restart: always
    ports:
      - "3002:3002"
    volumes:
      - /var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=dev

  web:
    container_name: party_manager
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      - RAILS_ENV=development
    ports:
      - '3000:3000'
    volumes:
      - .:/railsapp
    links:
      - mysql

我还通过

在容器外壳中安装了memchaced
docker exec -it 499e3d1efe44 bash

**499e3d1efe44 是我的容器 ID。

然后使用命令安装 gem:gem install memcached

【问题讨论】:

    标签: ruby-on-rails docker docker-compose dockerfile dalli


    【解决方案1】:

    默认情况下,Compose 会为您的应用设置单一网络。每个 服务的容器加入默认网络,并且两者都是 该网络上的其他容器可以访问,并且可以被该网络上的其他容器发现 它们的主机名与容器名称相同。

    因此,根据您的 docker-compose.yaml 文件,您可以从 Web 容器访问 cache:112111 上的缓存容器。

    【讨论】:

    猜你喜欢
    • 2013-02-04
    • 2015-01-16
    • 2016-06-26
    • 2015-01-21
    • 1970-01-01
    • 2019-11-21
    • 2018-06-29
    • 1970-01-01
    • 2018-02-22
    相关资源
    最近更新 更多