diff --git a/contrib/dockerrpm b/contrib/dockerrpm
index cf7b5c0117370a0e81d23bdb6935802940935f2a_Y29udHJpYi9kb2NrZXJycG0=..bb9a06d14857158d82ee5c7b3ac47d3d429da5be_Y29udHJpYi9kb2NrZXJycG0= 100755
--- a/contrib/dockerrpm
+++ b/contrib/dockerrpm
@@ -31,5 +31,9 @@
 echo RUN useradd $DBUILDUSER -u `id -u` -g $DBUILDUSER
 ) | $DOCKER build --tag $CONTAINER -
 
-$DOCKER run -u $DBUILDUSER --rm -v $ROOTDIR:/hg $CONTAINER bash -c \
-    "cp -a hg hg-build; cd hg-build; make clean local $PLATFORM; cp packages/$PLATFORM/* /hg/packages/$PLATFORM/"
+RPMBUILDDIR=$ROOTDIR/packages/$PLATFORM
+contrib/buildrpm --rpmbuilddir $RPMBUILDDIR --prepare
+
+DSHARED=/mnt/shared
+$DOCKER run -u $DBUILDUSER --rm -v $RPMBUILDDIR:$DSHARED $CONTAINER \
+    rpmbuild --define "_topdir $DSHARED" -ba $DSHARED/SPECS/mercurial.spec --clean