Не удается загрузить файл через перевозчиков тумана в minio (docker-compose)

Возникает ошибка Excon::Error::Socket (getaddrinfo: Имя или служба неизвестна (SocketError)) при попытке загрузить файл через перевозчиков тумана в minio.

Докер сочиняет

version: '3'
services:
  minio:
    image: minio/minio
    deploy:
      resources:
        limits:
          memory: 256m
    volumes:
      - 'minio:/var/lib/minio'
    environment:
      - "MINIO_ACCESS_KEY=development"
      - "MINIO_SECRET_KEY=development"
    ports:
      - "9000:9000"
    command: server /export
  rails:
    build: .
    command: bash -c 'rm -f /test/tmp/pids/server.pid && bundle && bundle exec rails s -p 3000 -b 0.0.0.0'
    volumes:
      - .:/test
    ports:
      - "3000:3000"
    depends_on:
      - minio
volumes:
  minio:

Инициализатор несущей

CarrierWave.configure do |config|
  config.fog_provider = 'fog/aws'
  config.fog_credentials = {
      provider:              'AWS',
      aws_access_key_id:     'development',
      aws_secret_access_key: 'development',
      region:                'us-east-1',
      host:                  'minio',
      endpoint:              'http://localhost:9000'
  }
  config.fog_directory  = 'test'
  config.fog_public     = false
  # config.fog_attributes = { cache_control: "public, max-age=#{365.day.to_i}" } # optional, defaults to {}
end

person Vitaly Igorevich    schedule 30.08.2017    source источник
comment
возможно, просмотр журнала вашего сервера поможет понять эту проблему.   -  person Fabrizio Bertoglio    schedule 30.08.2017
comment
в журнале только одна ошибка. Excon::Error::Socket (getaddrinfo: имя или служба неизвестна (SocketError))   -  person Vitaly Igorevich    schedule 30.08.2017
comment
Я полагаю, что ошибка возникнет, когда DNS не может быть разрешен, может быть, localhost не определен в этом контексте? Вы можете попробовать явно установить IP-адрес, поэтому используйте значение конечной точки http://127.0.0.1:9000.   -  person geemus    schedule 31.08.2017
comment
Я забыл про внутренние адреса в докере. вместо localhost:9000 я должен использовать минио:9000. Задача решена.   -  person Vitaly Igorevich    schedule 01.09.2017


Ответы (1)


Вы Carrierwave внутри док-контейнера должны указывать на службу DNS в вашем случае, следующие изменения должны работать

CarrierWave.configure do |config|
  config.fog_provider = 'fog/aws'
  config.fog_credentials = {
      provider:              'AWS',
      aws_access_key_id:     'development',
      aws_secret_access_key: 'development',
      region:                'us-east-1',
      host:                  'minio',
      endpoint:              'http://minio:9000'
  }
  config.fog_directory  = 'test'
  config.fog_public     = false
  # config.fog_attributes = { cache_control: "public, max-age=#{365.day.to_i}" } # optional, defaults to {}
end
person Harshavardhana    schedule 12.09.2017