Docker-Compose退出,代码为0

Tim*_*let 98 docker docker-compose

当我启动docker-compose upUbuntu容器退出时ubuntu exited with code 0.

当我跑步时docker run -d -ti -p 80:80 -v ~/sph/laravel52:/www/laravel ubuntu,一切正常.

如何使用Docker Compose复制此行为?

这是我的Dockerfile:

# Version: 0.0.1
FROM ubuntu:15.04



ENV DEBIAN_FRONTEND noninteractive

#INSTALL ALL
RUN apt-get update && apt-get install -y  \
       nano \
       php5-fpm \
       php5-mysql \
       nginx



#NGINX CONF
ADD nginx/sites-available/laravel.conf /etc/nginx/sites-available/
RUN rm /etc/nginx/sites-available/default
RUN mv /etc/nginx/sites-available/laravel.conf /etc/nginx/sites-available/default

VOLUME /www


ENTRYPOINT nginx && service php5-fpm start && /bin/bash

CMD ["true"]


EXPOSE 80
Run Code Online (Sandbox Code Playgroud)

而且docker-compose.yml:

version: '2'
services:
  ubuntu:
        build: .
        container_name: ubuntu
        volumes:
            - ~/sph/laravel52:/www/laravel
        ports:
          - "80:80"
Run Code Online (Sandbox Code Playgroud)

Jes*_*oco 231

问题是您-t在运行容器时使用该选项.

你能检查一下在docker-compose.yml文件中启用容器保持运行的tty选项(参见参考资料)吗?

version: '2'
services:
  ubuntu:
        build: .
        container_name: ubuntu
        volumes:
            - ~/sph/laravel52:/www/laravel
        ports:
          - "80:80"
        tty: true
Run Code Online (Sandbox Code Playgroud)

  • 您是否收到错误消息:`错误:HTTP请求花了太长时间才完成.添加`tty:true`后,重试--verbose以获取调试信息.? (4认同)
  • @LuisMilanese通常在前台进程在docker容器中完成时,会假定作业已完成并清理容器实例。但是,诸如数据库引擎和Web服务器之类的东西需要继续运行。通过创建伪终端,容器可以保持活动状态。您可以通过运行带有和不带tty的docker logs << container name >>命令来查看此工作流程 (3认同)