Docker is pretty portable by design. If you use bind mounts you can just scp the docker-conpose.yml and your bind mount volumes to your new server and you're done. If using Docker-managed volumes you'll need to docker cp the data out of them first before scp, then docker cp them into your volumes once you docker-compose up your containers.