Docker与多个服务组合

Docker与多个服务组合,docker,docker-compose,Docker,Docker Compose,这是一个示例问题!不要在生产中这样做。在单独的容器中运行NGINX/PHP/其他服务 当我启动docker compose up时,Ubuntu容器将以退出,Ubuntu将以代码0退出 当我运行docker run-d-ti-p80:80-v~/sph/laravel52:/www/laravelubuntu,一切正常 如何使用Docker Compose复制此行为 这是我的Dockerfile: # Version: 0.0.1 FROM ubuntu:15.04 ENV DEBIAN_

这是一个示例问题!不要在生产中这样做。在单独的容器中运行NGINX/PHP/其他服务

当我启动
docker compose up
时,Ubuntu容器将以
退出,Ubuntu将以代码0退出

当我运行
docker run-d-ti-p80:80-v~/sph/laravel52:/www/laravelubuntu
,一切正常

如何使用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
docker compose.yml

version: '2'
services:
  ubuntu:
        build: .
        container_name: ubuntu
        volumes:
            - ~/sph/laravel52:/www/laravel
        ports:
          - "80:80"

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

您能检查一下容器是否在docker-compose.yml文件中启用了
tty
选项(请参阅)并保持运行吗

version: '2'
services:
  ubuntu:
        build: .
        container_name: ubuntu
        volumes:
            - ~/sph/laravel52:/www/laravel
        ports:
          - "80:80"
        tty: true

我知道您可以在ENTRYPOINT nginx&service php5 fpm start&&/bin/bash中执行此操作。但如果您不理解该决定的含义,您可以阅读以下Img名称。我的错误。UbuntuI在将ruby添加到centos Dockerfile中时遇到了类似的问题。因此,我使用了“RUN-yum-update&&yum-install-y-ruby”,您是否收到错误消息:
错误:HTTP请求花费的时间太长而无法完成。使用--verbose重试以获取调试信息。
添加
tty:true
后,tty工作,因为它创建了一个伪终端。我在SQL Server 2017容器中遇到了类似的问题。它在独立模式下运行良好,但在多容器场景中以docker compose模式退出。以下是我对tty所做的修复@NileshGule感谢您花时间解释tty的工作原理,不过,如果您不介意的话,我想知道更多。创建伪终端将如何防止退出?再次感谢。@LuisMilanese通常,当前台进程在docker容器内完成时,它会假定作业已完成并清理容器实例。但数据库引擎和web服务器之类的东西需要继续运行。通过创建伪终端,容器保持活动状态。您可以通过运行docker logs命令来查看此工作流,无论是否使用ttytty,ttytty都不适用于我。。我正在使用docker compose的版本“3”