- Published on
docker-compose ports
ports
Expose ports
- Port mapping is incompatible with
network_mode: host docker-compose runignoresportsunless you include--service-ports.
Short syntax
There are three options:
- Specify both ports (
HOST:CONTAINER) - Specify just the container port (an ephemeral host port is chose for the host port)
- Specify the host IP address to bind to AND both ports (the default is 0.0.0.0, meaning all interface): (
IPADDR:HOSTPORT:CONTAINERPORT). ifHOSTPORTis empty (for example127.0.0.1::80), an ephemeral port is chosen to bind to on the host.- When mapping ports in the
HOST:CONTAINERformat, you may experience erroneous results when using a container port lower than 60, because YAML parses numbers in the formatxx:yyas a base-60 value. For this reason, we recommend always explicitly specifying your port mappings as strings.
- When mapping ports in the
ports:
- "3000"
- "3000-3005"
- "8000:8000"
- "9090-9091:8080-8081"
- "49100:22"
- "127.0.0.1:8001:8001"
- "127.0.0.1:5000-5010:5000-5010"
- "127.0.0.1::5000"
- "6060:6060/udp"
- "12400-12500:1240"
Long syntax
The long form syntax allows the configuration of additional fields that can't be expressed in the short form, The long syntax is new in the v3.2 file format.
target: the port inside the containerpublished: the publicly exposed portprotocol: the port protocol (tcporudp)mode:hostfor publishing a host port on each node, oringressfor a swarm mode port to be load balanced.
ports:
- target: 80
published: 8080
protocol: tcp
mode: host