Skip to content

Conversation

@RobHooper
Copy link
Contributor

Closes #586

@RobHooper RobHooper requested a review from yolile October 28, 2025 17:45
@RobHooper RobHooper self-assigned this Oct 28, 2025
Copy link
Member

@jpmckinney jpmckinney left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Redis 6.2 is EOL since Feb 2025.

When operating a cluster, we can upgrade to at most 7.8 (though only 7.4 is at https://hub.docker.com/_/redis/): https://redis.io/docs/latest/operate/rs/installing-upgrading/upgrading/upgrade-cluster/#supported-upgrade-paths

However, the Docker images are not a cluster, so I think we can upgrade directly to 8.4. For example, 8.0x can read 6.2 databases: https://redis.io/docs/latest/operate/rs/installing-upgrading/upgrading/upgrade-database/

That said, we can still take the precautions here: https://redis.io/docs/latest/operate/oss_and_stack/install/upgrade/standalone/

I've read these breaking changes and found no issues:

@@ -0,0 +1,101 @@
# Network
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should minimize this file to only the options that change the default and that are truly necessary. This will make it easier to upgrade if options are deprecated in future. For example, *-ziplist-* became *-listpack-*, lua-time-limit is deprecated. I did:

curl https://raw.githubusercontent.com/redis/redis/6.2/redis.conf | grep -v '^#' | grep . | sort > a
curl https://raw.githubusercontent.com/open-contracting/deploy/de667b17e3eae5a245570df3a0a1fff4d29b9623/salt/docker_apps/files/conf/redis.conf | grep -v '^#' | grep . | sort > b
diff -u a b

And I get (defaults in comments just for clarity in this comment):

bind 0.0.0.0 :: # 127.0.0.1 -::1
appendonly yes # no
daemonize yes # no
dir /data # ./
pidfile /tmp/redis.pid # /var/run/redis_6379.pid
protected-mode no # yes
save ""  # not present in default redis.conf
  • RapidFort must be doing something special for daemonize yes to work. If we use the default image, I think we want to leave it as daemonize no.
  • If we use the default image, protected mode is off by default (protected-mode no): https://hub.docker.com/_/redis#security

So I think that leaves us with just:

bind 0.0.0.0 ::
dir /data
pidfile /tmp/redis.pid
# https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/#append-only-file
appendonly yes
# https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/#how-i-can-switch-to-aof-if-im-currently-using-dumprdb-snapshots
save ""

I repeated the diff comparing to 8.4, and, besides new options from later versions and the differences already noted, the default of repl-diskless-sync changed from no to yes. However, we don't use replicas, so it's not relevant.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The customisation in this config file is from the previous Bitnami container which I pulled over to keep the systems running as similarly as possible. It will be better to have the lean configuration you've shared above - I will commit this.

Additionally, I am removing pidfile /tmp/redis.pid. From my reading pidfile /tmp is set to help redis recover from a unclean shutdown - in our case redis-server is the entrypoint and therefore this is managed by Docker. I believe bitnami had a wrapper script which then ran redis so that may be why they needed it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good. I think perhaps pidfile also doesn't make sense with daemonize no.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bitnami redis image deprecation

3 participants