Docker,docker-compose,restart:除非在控制台中停止松散日志

时间:2017-12-07 16:02:43

标签: ruby-on-rails powershell docker docker-compose dockerfile

我有docker-compose.yml版本3,效果非常好:

version: '3'

services:

  db:
    image: postgres
    restart: unless-stopped
    ports:
      - "5432:5432"

redis:
    image: redis
    restart: unless-stopped
    ports:
      - "6379:6379"

  app:
    build: .
    restart: unless-stopped
    command: bash ./script.sh
    volumes:
      - bundle:/bundle
    ports:
      - "3000:3000"
      - "1234:1234"
    depends_on:
      - db
      - redis
    stdin_open: true
    tty: true

volumes:

  bundle: {}

我在Rails中使用它并从Windows端口1234调试附件。一切正常。

但是

有时我的Rails服务器崩溃了。它发生了。所以我需要app容器重启自己。确实如此。但是我在powershell控制台中丢失了日志。

docker-compose up开始,我看到了一切。

app容器崩溃并重新启动时,我从“新”app容器中看不到任何内容。为什么呢?

如果我手动关闭app容器并手动启动它,那么重新启动之前容器中的所有日志将再次向下滚动,就像尼亚加拉大瀑布一样!

错误?我自己的错误?

1 个答案:

答案 0 :(得分:0)

容易回答,它既不是Docker错误,也不是您自己的错误=)

Docker日志分别连接到容器,因此,当您尝试查看日志(创建新的应用程序容器之后)时,您会注意到该日志为空,没有向上滚动的历史记录。 实际上,您要查找的日志已附加到您的旧容器中,该旧容器已被删除并由新的应用程序容器替换。

解决方法是,始终将日志文件从Rails应用程序内挂载到docker外部,这样就不会丢失任何数据。

即使停止或删除容器,日志/数据也将保持不变。