To expose multiple port in a Docker container

Can we have multiple ports exposed in a same container - Ex: Apache listening on 80, tomcat on 8080, wildfly on 8082?

Sure. But exposed posts are just documentation hints, they do nothing on their own.

They express the intention of the image maintainer which container ports should be published to host ports to access the application(s). Some management tools use exposed ports to pre-populate the container port for port mappings when a new container is created based on that image. By default, (aka when using a bridge network) the container will not be reachable from the host, unless the container port is published to a host port.