Ruby on rails Docker,Docker compose,重新启动:除非停止控制台中的松散日志

Ruby on rails Docker,Docker compose,重新启动:除非停止控制台中的松散日志,ruby-on-rails,powershell,docker,docker-compose,dockerfile,Ruby On Rails,Powershell,Docker,Docker Compose,Dockerfile,我有一个docker compose.yml3版,非常好用: version: '3' services: db: image: postgres restart: unless-stopped ports: - "5432:5432" redis: image: redis restart: unless-stopped ports: - "6379:6379" app: build: .

我有一个
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服务器崩溃。这是常有的事。因此,我需要
应用程序
容器重新启动自身。确实如此。但我在powershell控制台中丢失了日志

从docker compose up开始时,我看到了一切

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

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


臭虫?我自己的bug?

答案很简单,它既不是docker bug,也不是你这边的bug=)

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

作为一种解决方法,只需将日志文件从rails应用程序内部装载到docker外部,这样就不会丢失任何数据

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