An image for using redis, bundled with Alpine Linux and s6.
Yet another container for running nginx?
Aren't you only supposed to run one process per container?
Hell no! The following are good examples of when multiple processes within one container might be necessary:
- Automatically updating [nginx][nginx] proxy settings when a down-stream application server (nodejs, php, etc) restarts (and the IP changes).
- Automatically updating HAProxy configuration to load balance to a group of down-stream application servers.
- Running a logging daemon to centralize log management (i.e. logentries, loggly, logstash).
- When you need to run a script on application server crash (to tidy something up), as the standard Docker container restart policies won't provide this.
In all of these instances, there is one primary services and secondary support services. When the secondary support services fail, they should be automatically restarted. When the primary service fails, the container itself should restart.
To use this image include
FROM smebberson/alpine-redis at the top of your
Dockerfile, or simply
docker run --name redis smebberson/alpine-redis.
Redis logs (access and error logs) are automatically streamed to stdout.
This container comes setup as follows:
- s6 will automatically start redis for you.
- If redis dies, so will the container.
- A basic redis configuration which you can review and customise.
To update the configuration:
- Create a file called
redis-local.conf, fill it with all of the config overrides that you require.
- In your
Dockerfile, copy this file to
Redis will start and load the config at
/etc/redis.conf, and then load
/etc/redis-local.conf and apply any overrides.