Tags

  • AWS (7)
  • Apigee (3)
  • ArchLinux (5)
  • Array (6)
  • Backtracking (6)
  • BinarySearch (6)
  • C++ (19)
  • CI&CD (3)
  • Calculus (2)
  • DesignPattern (43)
  • DisasterRecovery (1)
  • Docker (8)
  • DynamicProgramming (20)
  • FileSystem (11)
  • Frontend (2)
  • FunctionalProgramming (1)
  • GCP (1)
  • Gentoo (6)
  • Git (15)
  • Golang (1)
  • Graph (10)
  • GraphQL (1)
  • Hardware (1)
  • Hash (1)
  • Kafka (1)
  • LinkedList (13)
  • Linux (27)
  • Lodash (2)
  • MacOS (3)
  • Makefile (1)
  • Map (5)
  • MathHistory (1)
  • MySQL (21)
  • Neovim (10)
  • Network (66)
  • Nginx (6)
  • Node.js (33)
  • OpenGL (6)
  • PriorityQueue (1)
  • ProgrammingLanguage (9)
  • Python (10)
  • RealAnalysis (20)
  • Recursion (3)
  • Redis (1)
  • RegularExpression (1)
  • Ruby (19)
  • SQLite (1)
  • Sentry (3)
  • Set (4)
  • Shell (3)
  • SoftwareEngineering (12)
  • Sorting (2)
  • Stack (4)
  • String (2)
  • SystemDesign (13)
  • Terraform (2)
  • Tree (24)
  • Trie (2)
  • TwoPointers (16)
  • TypeScript (3)
  • Ubuntu (4)
  • Home

    docker-compose ports

    Published Mar 16, 2022 [  Docker  ]

    ports

    Expose ports

    • Port mapping is incompatible with network_mode: host
    • docker-compose run ignores ports unless 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). if HOSTPORT is empty (for example 127.0.0.1::80), an ephemeral port is chosen to bind to on the host.
      • When mapping ports in the HOST:CONTAINER format, you may experience erroneous results when using a container port lower than 60, because YAML parses numbers in the format xx:yy as a base-60 value. For this reason, we recommend always explicitly specifying your port mappings as strings.
    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 container
    • published: the publicly exposed port
    • protocol: the port protocol (tcp or udp)
    • mode: host for publishing a host port on each node, or ingress for a swarm mode port to be load balanced.
    ports:
      - target: 80
        published: 8080
        protocol: tcp
        mode: host
    

    Reference