In addition to the tips above, see Carton, where you declare your dependencies in the cpanfile, then pin specific module versions in the cpanfile.snapshot, and then use Carton during the Docker build to get specific versions installed. This helps you re-create a perfect matching docker container per project.