First of all it`s correct, that you cannot granting GPIO access from inside of the docker Container as i know so far.
A Possible Workaround is to adding Parameters to the Dockerfile and to your application:
Your Dockerfile should have an Entrypoint in the End like:
ENTRYPOINT ["./yourBinary","-gpioNumber"]
After this you should able to start a Docker Container with following command (after the image build of course):
1. API: docker run --privileged -d YourImageName -gpio=22 <--- for example
2. GUI: docker run --privileged -d YourImageName -gpio=24 <--- for example
As mention in the comment is it Possible as long you are not using the same GPIO. Heres a Documentation for Docker GPIO access https://blog.alexellis.io/gpio-on-swarm/
Thats one suggestion.
But to answering your Question, Yes! you can run multiple Application without Docker.
How? As Example run your GUI and API application as process in a Background with the bg command
https://www.computerhope.com/unix/ubg.htm
But as above descripted as long you won`t use the same GPIO port