Optimize Dockerfile by combining RUN layers (final image ~50mb smaller)