Docker与多个服务组合
这是一个示例问题!不要在生产中这样做。在单独的容器中运行NGINX/PHP/其他服务 当我启动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_
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”