Preheat the oven to 350°F.
Peel and destem the shallots and place them in a heavy saucepan fitted with a lid.
Add 1 teaspoon olive oil and shake to coat the shallots well.
Cover and place the pan in the oven and roast for about 25 minutes, turning the shallots over once.
Remove the shallots to a bowl and set aside.
Slice the white onions in half, remove the stem, and peel.
Place the onions, cut side down, in a saucepan with 1 teaspoon olive oil.
Place the pan in the oven, and roast, covered, for about 1 hour, turning the onions over every 15 minutes.
While the onions are cooking, place a large skillet over medium-high heat.
Add 1 teaspoon of olive oil and the white part of the leeks.
Saute for about 7 minutes, stirring frequently, or until limp.
Place the cooked leeks in the bowl with the shallots and set aside.
Add 1 teaspoon olive oil to the pan and add the red onion.
Cook, stirring frequently, for about 10 minutes or until they are lightly softened and caramelized.
Place the cooked red onions in the bowl with the leeks and shallots and set aside.
Place 1 teaspoon olive oil in the skillet and add the green part of the leeks.
Cook, stirring frequently, for 5 minutes.
Place the cooked green part of the leeks in the bowl with the white part of the leeks, red onion, and shallots.
Deglaze the pan used to cook the shallots, leeks, and red onion with 1 cup of vegetable stock, then add that liquid to the bowl with the leeks, shallots, and red onion. Set aside.
When the white onions are roasted, add 3 cups of vegetable stock to the roasting pan, and using a stick blender or blender, puree the white onions and stock together until smooth.
Add the cooked shallots, leeks, red onions, and the liquid to the saucepan with the pureed onion mixture.
Place the mixture on the stove over low heat and add the goat cheese and milk.
Cook, stirring very gently, until the goat cheese melts.
Serve.