Curve deform - Follow along a path Whilst searching for a solution I stumbled upon Animate object along path and deform accordingly

I am creating a logo for a new software project I am working on, the finished logo will have two dolphins either side of a infinity loop, I want these dolphins to be correctly deformed along the curve.
I will also create an animated 'loading indicator' with the dolphin moving arrond the loop.

I have downloaded a Dolphin from TurboSquid and getting it to follow the path is no problem, but I am having trouble with the curve deform.
It's difficault tweaking the Origin to be just right, I want the dolphin to be exactly along the path, but it is going all over the place.



The curve is not quite 2D:



On the Curve Modifer, deformation axis is set the X.

Am I doing something wrong?
Is there a better technique? Any pointers to tutorals?

Thanks. :-)

Update

Thanks guys for all your help.
I have had a little play arround with armatures and control objects, I have made a lot of progress but as you can see I have two issues:


The first bone (Bone02 in .blend file) seems to be stuck in position (it does have tracking constraint).
The mid-section (Bone05) is rotated causing the body twist.




(I have also updated the repo)
If you want to use an armature, follow the Batfinger's tuto here.

If you want to use a simple Curve modifier, you need to make sure that the position of your object on the curve. What you should do is:


Choose a vertex in your curve, where your animation is supposed to begin.
Make it the curve's origin.
Make it the curve’s first point. To do so, enable the Bsurfaces addon, select the vertex, in the Tools panel > Tools > Bsurfaces > click Set First Points.
Now put your dolphin object at the exact same point.
Move it on the right axis so that it follows the curve.