diff --git a/repos/jekyll/Dockerfile b/repos/jekyll/Dockerfile
index ad8e5fa4fb5f34380700e8ad78419818a4a61b6a..ff472ff12070dccfa792f6aaa0cee2c68188764d 100644
--- a/repos/jekyll/Dockerfile
+++ b/repos/jekyll/Dockerfile
@@ -175,10 +175,15 @@ RUN mkdir -p $JEKYLL_DATA_DIR
 RUN chown -R jekyll:jekyll $JEKYLL_DATA_DIR
 RUN chown -R jekyll:jekyll $JEKYLL_VAR_DIR
 RUN chown -R jekyll:jekyll $BUNDLE_HOME
-RUN rm -rf /root/.gem
 RUN rm -rf /home/jekyll/.gem
 RUN rm -rf $BUNDLE_HOME/cache
 RUN rm -rf $GEM_HOME/cache
+RUN rm -rf /root/.gem
+
+# Work around rubygems/rubygems#3572
+RUN mkdir -p /usr/gem/cache/bundle
+RUN chown -R jekyll:jekyll \
+  /usr/gem/cache/bundle
 
 CMD ["jekyll", "--help"]
 ENTRYPOINT ["/usr/jekyll/bin/entrypoint"]
diff --git a/repos/jekyll/copy/all/usr/jekyll/bin/bundle b/repos/jekyll/copy/all/usr/jekyll/bin/bundle
index 3e8903c2bff58e6193c4d6b3b192819caa2d9b7a..98957ebad7a29a5fb5b82f2bc18b262462c6cc64 100755
--- a/repos/jekyll/copy/all/usr/jekyll/bin/bundle
+++ b/repos/jekyll/copy/all/usr/jekyll/bin/bundle
@@ -18,11 +18,11 @@ fi
 
 if [ "$1" = "install" ] || [ "$1" = "clean" ] || [ "$1" = "update" ]; then
   if [ "$(stat -c '%U' "$BUNDLE_HOME")" != "jekyll" ]; then
+    chown -R jekyll:jekyll /usr/gem/cache/bundle
     chown -R jekyll:jekyll "$BUNDLE_HOME"
   fi
 fi
 
-
 if [ "$1" = "install" ] || [ "$1" = "update" ]; then
   # There is no need to report that we are using check.
   if [ "$1" = "update" ] || ! su-exec jekyll $exe check 1>/dev/null 2>&1; then