How can I dock a boat without breaking it?

Two half-steps placed at the lower half of the water level surrounded by other blocks seems to work well.

H = Half step, B = Block, W = Water

[B][B][B][B]    
[B][H][H][B]
[B][W][W][B]
[B][W][W][B]

If you want to keep mobs from pushing the boat out, you could include pistons at the open end.