3.1 KiB
KeyDB Docker Image (Snap Internal)
This docker image builds KeyDB within the image and cleans up afterwards. A few notes about the image:
- use gosu to avoid running as root https://github.com/tianon/gosu
- packages are installed, tracked and cleaned up to minimize container sizes
- keydb-server binary symbols remain for troubleshooting. All other KeyDB binaries are stripped
- keydb.conf added and linked to redis.conf for legacy compatibility and as default config file
- use entrypoint and cmd for best practices. Remove protected-mode during build incase user specifies binary without .conf, or just wants append parameters
Building the Docker Image
This image clones the keydb-internal repo, hence a GHE PAT token or SSH access is needed. See more on obtaining GHE PAT. It is not secure to pass tokens/credentials as build-args, env variables, or COPYing then deleting, so we use secrets. This option is only available with the Docker BuildKitso the docker build kit must be enabled via DOCKER_BUILDKIT=1
, or permanently by appending "features": { "buildkit": true }
to /etc/docker/daemon.json.
To Build:
Run the command below updating your info as follows:
- Pass in the branch name as a build argument
- Tag your image to whatever you want to use
- Add your PAT info to GHE_PersonalAccessToken.txt
DOCKER_BUILDKIT=1 docker build --no-cache --build-arg BRANCH=keydbpro --secret id=PAT,src=GHE_PersonalAccessToken.txt . -t myImageName:imageTag
For a detailed conventional build view pass --progress=plain
while building. Note that --no-cache
must be used to ensure your credentials are pulled in as they are not cached.
Using The Image
Bind port
Bind the container to the node/machine by passing the parameter -p 6379:6379
when you run the docker container
Configuration file
By default KeyDB launches by specifiying its internal keydb.conf file at /etc/keydb/keydb.conf
. If you would like to use your own config file you can link to the config file with -v /path-to-config-file/keydb.conf:/etc/keydb/keydb.conf
then run the container whose default command is keydb-server /etc/keydb/keydb.conf
Alternatively specify any config file location, by specifying the location following the binary to override default docker run ThisDockerImage keydb-server /path/to/my/config-file/
. You can also just append parameters to default image with docker run ThisDockerImage keydb-server /etc/keydb/keydb.conf --dir /data --server-threads 4
.
Persistent storage
If persistence is enabled, data is stored in the VOLUME /data, which can be used with --volumes-from some-volume-container or -v /docker/host/dir:/data (see docs.docker volumes).
Connect via keydb-cli
you can grab the ip of the container with docker inspect --format '{{ .NetworkSettings.IPAddress }}' mycontainername
then run the following:
docker run -it --rm ThisDockerImage keydb-cli -h <ipaddress-from-above> -p 6379