Why php development server hangs with docker compose?

I have the following docker-compose.yml configuration file:

silex-twig:
  image: php:7.1
  command: php -S localhost:4000 /app/index.php
  volumes:
    - .:/app
  ports:
    - 3000:4000

When I run docker-compose up it downloads the base image but then it hangs here:

  • Pushing a tag to private docker registry in artifactory fails from mac
  • Limit disk size and bandwidth of a Docker container
  • docker gave me fail error while building code
  • Docker cannot link to a non running container - fixed with a reboot
  • How do you add items to .dockerignore?
  • Interactive shell using Docker Compose
  • Recreating silextwig_silex-twig_1
    Attaching to silextwig_silex-twig_1
    

    What am I doing wrong? There is nothing available on port 3000.
    I know there are setups with php-fpm + nginx but that seemed complicated for only development.

  • How i can build container by docker-compose.yml environment variable?
  • how to setup continuos deployment from docker-hub to AWS ECS?
  • How can I pass a multi-line variable to a docker container?
  • docker host rebooted automatically when running docker build/run
  • Setting-up containers reverse proxy
  • Get bridge name associated to docker Network
  • One Solution collect form web for “Why php development server hangs with docker compose?”

    That is normal. It is attaching to the stdout of the container (for which there is no stdout being logged). At this point, the container is running.

    If you want to run in the background you would run with docker-compose up -d instead of just docker-compose up.

    The actual HTTP request to port 3000 won’t work because PHP is listening only on localhost. You need to modify your command to be php -S 0.0.0.0:4000 /app/index.php so that it is listening on all IP addresses and can accept connections through the Docker NAT.

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