better caching in dockerfile