Docker ports work in localhost but not with public ip

I`m starting with docker i have the next docker-compose when i run docker-compose up all with success, when i do curl localhost works fine but when i try to access from the public ip dont works the connection timeout.

version: '3'
services:
  db:
   environment:
     - POSTGRES_PASSWORD=mipass
     - POSTGRES_USER=miuser
     - POSTGRES_DB=pdfdd
   image: postgres:9.6
  web:
   restart: always
   tty: true
   stdin_open: true
   build: .
   command: python ./code/manage.py runserver 0.0.0.0:8000
   volumes:
     - .:/code
   ports:
     - "8000:8000"
   depends_on:
     - db
  nginx:
    restart: always
    build: ./nginx/
    ports:
      - "80:80"
    volumes:
      - /www/static
      - .:/code
    links:
      - web:web

  • What is the best way to use different environments with Docker Swarm?
  • Throttling Disk Utilization
  • Hibernate database configuration for cloud deployment
  • NGINX & Consul-Template in Docker
  • Amazon EC2 boot time
  • AWS EC2 Container Service Container Id, what does this mean?
  • Where are Docker images stored on the host machine?
  • Docker return codes from background commands
  • Pass Docker ENV variable to rails app
  • Docker run copies to filesystem?
  • Can't connect Ngxin reverse proxy to Gunicorn on Django container (Docker)
  • How to use run deck service from local browser using up address?
  • One Solution collect form web for “Docker ports work in localhost but not with public ip”

    Thanks @BMitch, i forgot to open 80 port in security group if someone have the same error please see Opening port 80 EC2 Amazon web services for instructions.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.