Two men and a woman died in the shooting at the business on San Antonio's north side, according to the city's police department.
Other employees ran from the scene when the gunfire erupted, KSAT-TV reported.
Police responded and secured the area, and hours later they found the gunman with a self-inflicted gunshot wound, officials said.
He was identified by police as Jose Hernandez Galo.
While the motive for wasn't immediately known, Police Chief William McManus said the shooting was not random.
Separately, five people were wounded, one seriously, in a shooting outside a supermarket in San Francisco.
Police responding to reports of gunfire found multiple victims near a Safeway in the Outer Richmond neighbourhood.
A man with life-threatening injuries and four juveniles with non-life-threatening injuries were rushed to a hospital.
Police Captain Kevin Lee told the San Francisco Chronicle the shooting stemmed from a fight.
There were no arrests and investigators didn't immediately release suspect information.
The shooting sent bystanders scattering.
Tommy Corcoran, 19, told the Chronicle that he hid behind a log in Golden Gate Park after hearing gunshots and seeing people running away.
"This kind of violence does not represent who we are as a city, and we will never tolerate it," San Francisco Mayor Daniel Lurie said in a statement.