Docker-Compose exited with code 0
当我启动docker-compose up时,Ubuntu容器会以ubuntu exited with code 0退出。
当我运行docker run -d -ti -p 80:80 -v ~/sph/laravel52:/www/laravel ubuntu时,一切正常。
如何使用Docker Compose复制此行为?
这是我的Dockerfile:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| # 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:
1 2 3 4 5 6 7 8 9
| version: '2'
services:
ubuntu:
build: .
container_name: ubuntu
volumes:
- ~/sph/laravel52:/www/laravel
ports:
-"80:80" |
-
我了解您可能有意这样做ENTRYPOINT nginx && service php5-fpm start && binbash。 但是,如果您不了解该决定的含义,则可以阅读以下github.com/phusion/baseimage-docker
-
什么是fssw3rdfs?
-
图名。 我的错 的Ubuntu
问题是您在运行容器时正在使用选项-t。
您能否检查容器是否在继续运行的docker-compose.yml文件中启用tty选项(请参阅参考)?
1 2 3 4 5 6 7 8 9 10
| version: '2'
services:
ubuntu:
build: .
container_name: ubuntu
volumes:
- ~/sph/laravel52:/www/laravel
ports:
-"80:80"
tty: true |
-
tty: true它??有效!谢谢!!!
-
添加tty: true后是否收到错误消息:ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.?
-
@TimDevlet如果答案对您有用,则应将其标记为解决方案。
-
为我工作,谢谢:)
-
也为我工作。 @TimDevlet,请将答案标记为正确。 TIA。
-
为我工作!有人可以解释为什么它与tty一起使用?这是什么意思?
-
tty之所以起作用是因为它创建了一个伪终端。我对SQL Server 2017容器有类似的问题。它在独立模式下运行良好,但在多容器场景下以docker-compose模式退出。这是我用tty修复它的方法handsonarchitect.com/2018/01/
-
为我工作,谢谢。
-
@NileshGule感谢您的时间来解释tty为什么起作用,但是,如果您不介意的话,我想知道更多一点。如何精确地创建伪终端将阻止退出?再次感谢。
-
@LuisMilanese通常在前台进程在docker容器中完成时,会假定作业已完成并清理容器实例。但是,诸如数据库引擎和Web服务器之类的东西需要继续运行。通过创建伪终端,容器可以保持活动状态。您可以通过运行带有和不带tty的docker logs << container name >>命令来查看此工作流程
-
@NileshGule非常感谢您的解释。
-
tty对我不起作用..我正在使用docker-compose的版本" 3"
-
它对我有用。 @TimDevlet,将其标记为解决方案。