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:

  • Host Volumes Not getting mounted on 'Docker-compose up'
  • Liberty Docker Image is not running
  • Docker, communicating between hosts on different bridges
  • How to edit files in stopped/not starting docker container
  • File permissions for mapped folders on host machine
  • Running Kubernetes Example on CoreOS, Part 1 not work
  • 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 to build docker images on GPU
  • Can you run Dind as a service on Tutum so that Drone can use it?
  • Docker not releasing memory when shutdown, windows 10
  • Docker does not want to install vim into my container image
  • Cannot run asp.net 5 from docker
  • getting bundler load error frequently and no such file Gemfile error
  • 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.