【问题标题】:Can't upload file through carrierwave fog-aws to minio (docker-compose)无法通过carrierwave雾aws将文件上传到minio(docker-compose)
【发布时间】:2017-08-30 00:30:52
【问题描述】:

尝试通过carrierwave fog-aws 将文件上传到minio 时出现错误Excon::Error::Socket (getaddrinfo: Name or service not known (SocketError))。

Docker 编写

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

【问题讨论】:

  • 查看您的服务器日志可能有助于理解这个问题。
  • 在日志中只有一个错误。 Excon::Error::Socket (getaddrinfo: Name or service not known (SocketError))
  • 我相信当dns无法解析时会出现错误,也许localhost没有在那个上下文中定义?您可以尝试显式设置 ip,因此使用 http://127.0.0.1:9000 的端点值。
  • 我忘记了 docker 中的内部地址。相反localhost:9000 我必须使用minio:9000。问题解决了。

标签: ruby-on-rails carrierwave fog minio


【解决方案1】:

您在 docker 容器中的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    相关资源
    最近更新 更多