How do I configure docker compose to expose ports correctly?

I’m using docker and docker compose to run a clojure and a node app, alongside postgres.

The project is contained in the following folder structure.

  • Is it possible to read messages passed over stdout from within a Docker container? (without `docker logs`)
  • Deploying an existing docker image with Deis
  • Error running gitlab-ci.yml script under Alpine Docker based Image
  • PHP Application redirection cycle
  • “cp: Command not found” when recreating and extending centos6-i386 Docker base image
  • How do use external_links to connect docker-compose to common service?
  • project/
    -- app/
    -- -- Dockerfile
    -- frontend/
    -- -- /Dockerfile
    -- docker-compose.yml
    

    The app/Dockerfile looks like so…

    FROM clojure:latest
    COPY . /usr/src/app
    WORKDIR /usr/src/app
    
    EXPOSE 9000
    
    CMD ["lein", "run", "migrate", "&&","lein", "run"]
    

    The frontend/Dockerfile looks like so …

    FROM node:5
    COPY . /usr/src/app
    WORKDIR /usr/src/app
    RUN npm install
    
    EXPOSE 8080
    
    CMD ["npm", "start"]
    

    And lastly the docker-compose.yml looks like…

    frontend:
      image: bradcypert/node
      volumes:
        - ./frontend:/usr/src/frontend
      ports:
        - "8080:8080"
    
    backend:
      image: bradcypert/clojure
      volumes:
        - ./app:/usr/src/backend
      ports:
        - "9000:9000"
      links:
        - postgres
    
    postgres:
      image: postgres
      ports:
        - "5432:5432"
    

    backend is failing for a separate reason, but the frontend seems to be running successfully, that being said, I’m unable to hit localhost:8080 and see the app. What do I need to do make this happen?

    Thanks in advance.

    Just to clarify, the command being run is docker-compose up

  • Is it safe to remove Docker containers listed with `docker ps -f status=created`?
  • NuGet with Mono on Linux: Error getting response stream
  • Protractor running in docker returns element not existing but in localhost does
  • nginx reverse proxy for docker service
  • karma phantomjs not capturing in docker container
  • Multiple SymmetricDS instances at same host
  • One Solution collect form web for “How do I configure docker compose to expose ports correctly?”

    With boot2docker (on Mac or Windows), to access any port from localhost, you have to configure your VirtualBox VM in order to port-forward that port from the VM into the host.

    Your port mappings are correct, but you still need to make visible to your host (Mac) the one port you want to access from localhost (your Mac).

    See for instance “Using boot2docker to run Docker on a Mac or Windows” from Andrew Odewahn:

    enter image description here

    That way, you don’t have to find out what the IP of your machine is.
    (Which you can see with docker-machine ls followed by docker-machine ip <name>)

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