geoipupdate

Docker

Image information

The image is available on ghcr.io. The source code is available on GitHub.

Configuring

An account ID, a license key, and edition ID(s) to update must be provided.

  1. They can be set via configuration file by setting the environment variable GEOIPUPDATE_CONF_FILE to a path inside the container. This file is the same format as GeoIP.conf. Other options may be set in this file as well.
  2. Or they can be set via environment variables:
    • GEOIPUPDATE_EDITION_IDS - List of space-separated database edition IDs. Edition IDs may consist of letters, digits, and dashes. For example. GeoIP2-City would download the GeoIP2 City database (GeoIP2-City).
    • One of:
    • GEOIPUPDATE_ACCOUNT_ID - Your MaxMind account ID.
    • GEOIPUPDATE_ACCOUNT_ID_FILE - A file containing your MaxMind account ID. * One of:
    • GEOIPUPDATE_LICENSE_KEY - Your case-sensitive MaxMind license key.
    • GEOIPUPDATE_LICENSE_KEY_FILE - A file containing your case-sensitive MaxMind license key.

The following environment variables are optional:

The environment variables can be placed in a file with one per line and passed in with the --env-file flag. Alternatively, you may pass them in individually with the -e flag.

Environment variables override any options set in the config file.

Running

docker run

Run the latest image with:

docker run --env-file <file> -v <database directory>:/usr/share/GeoIP ghcr.io/maxmind/geoipupdate

<file> should be the environment variable file with your configuration. <database directory> should be the local directory that you want to download the databases to.

docker-compose

Run the latest image with:

version: '3'
services:
  geoipupdate:
    container_name: geoipupdate
    image: ghcr.io/maxmind/geoipupdate
    restart: unless-stopped
    environment:
      - GEOIPUPDATE_ACCOUNT_ID=XXXXXX
      - GEOIPUPDATE_LICENSE_KEY=XXXXXXXXXXXXXXXX
      - 'GEOIPUPDATE_EDITION_IDS=GeoLite2-ASN GeoLite2-City GeoLite2-Country'
      - GEOIPUPDATE_FREQUENCY=72
    networks:
      - geoipupdate
    volumes:
      - 'geoipupdate_data:/usr/share/GeoIP'

networks:
  geoipupdate:

volumes:
  geoipupdate_data:
    driver: local

You may also pass your MaxMind account ID and license key as secrets, for example:

version: '3'
services:
  geoipupdate:
    container_name: geoipupdate
    image: ghcr.io/maxmind/geoipupdate
    restart: unless-stopped
    environment:
      - 'GEOIPUPDATE_ACCOUNT_ID_FILE=/run/secrets/GEOIPUPDATE_ACCOUNT_ID'
      - 'GEOIPUPDATE_LICENSE_KEY_FILE=/run/secrets/GEOIPUPDATE_LICENSE_KEY'
      - 'GEOIPUPDATE_EDITION_IDS=GeoLite2-ASN GeoLite2-City GeoLite2-Country'
      - GEOIPUPDATE_FREQUENCY=72
    networks:
      - geoipupdate
    volumes:
      - 'geoipupdate_data:/usr/share/GeoIP'
    secrets:
      - GEOIPUPDATE_ACCOUNT_ID
      - GEOIPUPDATE_LICENSE_KEY

networks:
  geoipupdate:

volumes:
  geoipupdate_data:
    driver: local

secrets:
  GEOIPUPDATE_ACCOUNT_ID:
    file: ./secrets/GEOIPUPDATE_ACCOUNT_ID.txt
  GEOIPUPDATE_LICENSE_KEY:
    file: ./secrets/GEOIPUPDATE_LICENSE_KEY.txt

Note - When using docker-compose, you need to either:

If you don’t, the container will continuously restart.