Relationship Advice

My boyfriend and I have been together for over a year now. About 7 months into our relationship, I found out he was cheating on me with his ex. There were messages between them that were degrading towards me, because I didn't feel comfortable doing certain sexual activities. I confronted him about it, he started crying and blocked her on everything. I felt like I had to start doing the things that I didn't feel comfortable with or he'd start talking to her again. So I did. After I started doing those things, that's all he wants now. Every day. And he rarely does anything for me. He recently turned 21 and has been drinking a lot, and when he's drunk he's either really pissed off or (occasionally) really happy. I'm not allowed to drink with him because he gets mad and says he feels like he has to babysit me. His drinking has gotten bad enough that a week ago he got arrested for a DWI and I had to go pick him up from jail. All of this has put an enormous amount of stress on our relationship and we've been fighting non stop. The fighting has gotten bad enough that the other night he was sitting in the car with the driver door open and I was in between the door and the car, and he slammed the door shut on me opened it back up and shoved me out of the way. I've been under so much stress personally that my sleep habits have been fucked so I've been sleeping all day almost every day that I don't work. Apparently, to him, that means I'm cheating. Also, the last couple nights I've been way too tired to have sex or do anything, and apparently that means I'm cheating too. Like, I'm 4 days away from my period and I'm usually exhausted right before my period, and the added stress doesn't help. He says periods dont make people as tired as I have been.

I really love him, we've been planning a future together and trying to get our own place, but I decided to take a step back and really look at our relationship and my eyes are kind of opening to things that I hadn't noticed before. So I'm not really sure what to do. Any advice?