title: How do I keep a PHP-CLI container running without the need of any PHP script?
body: <p>I have been trying to build a PHP cli container using Docker &amp; Docker Compose and I want to keep it alive without the need to have any PHP script running inside it.</p>
  
  <p>I have tried my own <code>Dockerfile</code>:</p>
  
  <pre><code>FROM ubuntu:16.04
  ENV PATH="/root/.composer/vendor/bin:${PATH}"
  
  RUN apt-get update &amp;&amp; \
      apt-get -y -qq install software-properties-common \
      xvfb \
      locales &amp;&amp; \
      locale-gen en_US.UTF-8 &amp;&amp; \
      export LC_ALL=en_US.UTF-8 &amp;&amp; \
      export LANG=en_US.UTF-8 &amp;&amp; \
      add-apt-repository ppa:ondrej/php &amp;&amp; \
      apt-get update &amp;&amp; \
      DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install \
      php7.1-curl \
      php7.1-cli \
      php7.1-bcmath \
      php7.1-json \
      php7.1-intl \
      php7.1-mbstring \
      php7.1-mcrypt \
      php7.1-mysql \
      php7.1-xml \
      php7.1-xsl \
      php7.1-zip \
      curl \
      git \
      wget \
      pkg-config &amp;&amp; \
      apt-get clean &amp;&amp; \
      apt-get autoremove &amp;&amp; \
      rm -rf /var/lib/apt/lists/*
  
  COPY config /
  RUN sh /usr/local/bin/install.sh
  ENTRYPOINT bash -C '/entrypoint.sh';'bash'
  CMD ["php", "-a"]
  </code></pre>
  
  <p>And this one other too (extending from <a href="https://hub.docker.com/_/php/" rel="noreferrer">main PHP images</a>):</p>
  
  <pre><code>FROM php:7-cli-alpine
  ENV PATH="/root/.composer/vendor/bin:${PATH}"
  COPY config /
  RUN sh /usr/local/bin/install.sh
  WORKDIR /var/wwww
  CMD ["php", "-a"]
  </code></pre>
  
  <p>The <code>docker-compose.yml</code> has nothing but this:</p>
  
  <pre><code>version: '3.3'
  services:
      webserver:
        build:
          context: .
        restart: on-failure
        env_file: .env
        environment:
            UID: ${UID}
            GID: ${GID}
  </code></pre>
  
  <p>Finally <a href="https://github.com/reypm/docker-lamp/tree/trends" rel="noreferrer">here</a> is the full repository with everything if you want to give it a try.</p>
  
  <p>What is the problem? After build the container by running <code>docker-compose up --build --force-recreate</code> it exit out with code <code>0</code> but <code>docker-composer logs</code> is not helpful either because it says nothing.</p>
  
  <p>Take a look to the following output from the command line (for the 2nd Dockerfile on this post, for the first one is pretty much the same with more things):</p>
  
  <pre><code>$ docker-compose up --build --force-recreate
  Building webserver
  Step 1/6 : FROM php:7-cli-alpine
  7-cli-alpine: Pulling from library/php
  90f4dba627d6: Pull complete
  623a0217e4bc: Pull complete
  ecbf507e7e3c: Pull complete
  79a82dee0025: Pull complete
  457716c6bb05: Pull complete
  62e36287ffd0: Pull complete
  507e98c003bc: Pull complete
  b25e699baa37: Pull complete
  Digest: sha256:ecae911bd22279d4883ffdc631afddc434641c67eedf49914fc62dafb5329663
  Status: Downloaded newer image for php:7-cli-alpine
   ---&gt; 1e563ea5f552
  Step 2/6 : ENV PATH "/root/.composer/vendor/bin:${PATH}"
   ---&gt; Running in 29b65c1d7def
   ---&gt; d11c62bb5cf5
  Removing intermediate container 29b65c1d7def
  Step 3/6 : COPY config /
   ---&gt; e42022d1de91
  Step 4/6 : RUN sh /usr/local/bin/install.sh
   ---&gt; Running in 749230f42e9e
  All settings correct for using Composer
  Downloading...
  
  Composer (version 1.5.2) successfully installed to: /usr/local/bin/composer
  Use it: php /usr/local/bin/composer
  
  Changed current directory to /root/.composer
  Loading composer repositories with package information
  Updating dependencies
  Package operations: 21 installs, 0 updates, 0 removals
    - Installing hirak/prestissimo (0.3.7): Downloading (100%)
    - Installing symfony/stopwatch (v3.3.10): Downloading (100%)
    - Installing symfony/process (v3.3.10): Downloading (100%)
    - Installing symfony/polyfill-php72 (v1.5.0): Downloading (100%)
    - Installing paragonie/random_compat (v2.0.11): Downloading (100%)
    - Installing symfony/polyfill-php70 (v1.5.0): Downloading (100%)
    - Installing symfony/options-resolver (v3.3.10): Downloading (100%)
    - Installing symfony/finder (v3.3.10): Downloading (100%)
    - Installing symfony/filesystem (v3.3.10): Downloading (100%)
    - Installing symfony/event-dispatcher (v3.3.10): Downloading (100%)
    - Installing psr/log (1.0.2): Downloading (100%)
    - Installing symfony/debug (v3.3.10): Downloading (100%)
    - Installing symfony/polyfill-mbstring (v1.5.0): Downloading (100%)
    - Installing symfony/console (v3.3.10): Downloading (100%)
    - Installing php-cs-fixer/diff (v1.1.0): Downloading (100%)
    - Installing gecko-packages/gecko-php-unit (v2.2): Downloading (100%)
    - Installing doctrine/lexer (v1.0.1): Downloading (100%)
    - Installing doctrine/annotations (v1.5.0): Downloading (100%)
    - Installing composer/semver (1.4.2): Downloading (100%)
    - Installing friendsofphp/php-cs-fixer (v2.7.1): Downloading (100%)
    - Installing squizlabs/php_codesniffer (3.1.0): Downloading (100%)
  Writing lock file
  Generating optimized autoload files
  Cache directory does not exist (cache-vcs-dir): 
  Clearing cache (cache-repo-dir): /root/.composer/cache/repo
  Clearing cache (cache-files-dir): /root/.composer/cache/files
  Clearing cache (cache-dir): /root/.composer/cache
  All caches cleared.
   ---&gt; ff310362f4a5
  Removing intermediate container 749230f42e9e
  Step 5/6 : WORKDIR /var/wwww
   ---&gt; fe10fd52d6b6
  Removing intermediate container 6e472a693c0c
  Step 6/6 : CMD php -a
   ---&gt; Running in 789688d1346a
   ---&gt; b1286e96580b
  Removing intermediate container 789688d1346a
  
  Successfully built b1286e96580b
  Successfully tagged dockerlamp_webserver:latest
  Recreating dockerlamp_webserver_1 ... 
  Recreating dockerlamp_webserver_1 ... done
  Attaching to dockerlamp_webserver_1
  webserver_1  | Interactive shell
  webserver_1  | 
  dockerlamp_webserver_1 exited with code 0
  
  $ docker-compose logs
  Attaching to dockerlamp_webserver_1
  webserver_1  | Interactive shell
  webserver_1  | 
  </code></pre>
  
  <p>How I can keep the container running without the need to run a PHP script?</p>
  
  <blockquote>
    <p>Note: you might be asking why not just build <code>php-fpm|apache</code> but the
    thing is I do not need any webserver because the container will be
    used for a command line project only (which is a WIP)</p>
  </blockquote>