chore(docker): optimize caching in dockerfile