Sooooo... yeaaaaah... This is not appropriate at all.
I will say this: I find that military lends itself nicely to a midlife crisis. You'd think 40, but you'd be wrong. These people start to feel old in their late 20's. If a servicemember joined later (like let's say early to mid 20's as opposed to at 18), it just makes it that much worse. My husband, who is turning 30 at the end of next month, believes that he is old and broken. Even lateraling over to officer corps did not change how he feels. Many of the other lieutenants are in their early 20s. He's not, and even though he is in a great physical shape and does not look a day over 25, deep down this eats at him. Our big relationship meltdown had to do with him believing that he will be too old to enjoy fatherhood if we wait until he is 34 to 36. Seriously. Now he suddenly does not want kids and, should I get pregnant, he'd want me to terminate the pregnancy. (Not that we've had any sex lately.)
I'd be lying if I said that I had answers to what to do about this. But maybe it gives you a better idea of what's going on.
All that said, you cannot allow her to embarrass you this way.
There is absolutely nothing that you can do about her behavior. You can either leave or you can let it run its course and see if you can forgive her at the end of it.
However, what she did the other night is 100% unacceptable. Please, continue to hang out with your mutual friends. Make plans with them. Make sure that those plans do not include her. A vague "I think she's going through some tough time and needs her space" should be enough of an explanation if anyone asks.
Now, if she asks whether she can come, the answer is no. If she simply tries to come along, let her know in your calmest tone that she is no longer welcome to accompany you when you go to see other people, especially people you both know, because the last time she went her behavior was mortifying and you will not be embarrassed like that again.
Keep letting her laundry and dishes pile.
Me: 28 H: 30 T: 9 M: 7
WAH: First half of 2017. Round 2 started in Spring 2018.