Skip to content

hausgold/docker-minio

Repository files navigation

mDNS enabled minio/minio

Continuous Integration Source Code Docker Image

This Docker images provides the minio/minio image as base with the mDNS/ZeroConf stack on top. So you can enjoy minio while it is accessible by default as minio.local. (HTTP API Port 80 -> Port 9000, Web console Port 9090)

The root users credentials are minioadmin / minioadmin. You can change this by the MINIO_ROOT_USER / MINIO_ROOT_PASSWORD environment variables.

When the BUCKET_NAME environment variable is not-empty, we automatically create a new bucket with that name. Furthermore we allow anonymous downloads for this bucket. This is handy for testing an application with a local-S3 (compatible) service.

Requirements

  • Host enabled Avahi daemon
  • Host enabled mDNS NSS lookup

Getting starting

You just need to run it like that, to get a working minio:

$ docker run --rm hausgold/minio

Both ports port 9000 (API) is untouched, but can also be accessed via mDNS at port 80. The web console is available on port 9090.

docker-compose usage example

minio:
  image: hausgold/minio
  environment:
    # Mind the .local suffix
    - MDNS_HOSTNAME=minio.test.local
  ports:
    # The ports are just for you to know when configure your
    # container links, on depended containers
    - "9000"
    - "9090"

Host configs

Install the nss-mdns package, enable and start the avahi-daemon.service. Then, edit the file /etc/nsswitch.conf and change the hosts line like this:

hosts: ... mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns ...

Configure a different mDNS hostname

The magic environment variable is MDNS_HOSTNAME. Just pass it like that to your docker run command:

$ docker run --rm -e MDNS_HOSTNAME=something.else.local hausgold/minio

This will result in something.else.local.

You can also configure multiple aliases (CNAME's) for your container by passing the MDNS_CNAMES environment variable. It will register all the comma separated domains as aliases for the container, next to the regular mDNS hostname.

$ docker run --rm \
  -e MDNS_HOSTNAME=something.else.local \
  -e MDNS_CNAMES=nothing.else.local,special.local \
  hausgold/minio

This will result in something.else.local, nothing.else.local and special.local.

Other top level domains

By default .local is the default mDNS top level domain. This images does not force you to use it. But if you do not use the default .local top level domain, you need to configure your host avahi to accept it.

Further reading