gpt4 book ai didi

Docker容器将日志保存在宿主机目录下

转载 作者:行者123 更新时间:2023-12-02 11:38:01 25 4
gpt4 key购买 nike

我有一个类似于 this one 的问题。运行我的 docker-compose.yml 文件时,我会自动创建一个 docker 镜像,并按照我的 dockerfile 中的指定运行某些应用程序。这些应用程序会生成一些日志,但这些日志写入 Docker 容器内的 /home/logs/ 文件夹中。

如何指示这些日志写入到容器外部的我的 /path/on/host 地址上?仅仅是因为如果容器失败,我需要查看日志而不丢失它们!

这是我的docker-compose.yml:

version: '3'
services:
myapp:
build: .
image: myapp
ports:
- "9001:9001"

这是我的dockerfile:

FROM java:latest
COPY myapp-1.0.jar /home
CMD java -jar /home/myapp-1.0.jar

我只需使用docker-compose up -d在生产机器上运行它。

(顺便说一句,我是 docker 的新手。我的所有步骤都正确吗?我错过了什么吗?!我看到一切都很好,但我的应用程序正在运行!)

最佳答案

您只需要一个 docker 卷即可保存日志文件。因此,在 docker-compose.yml 所在的目录中创建一个日志目录,然后定义一个卷挂载。定义挂载时请记住语法是 <host_machine_directy>:<container_directory>

尝试一下下面的卷,让我知道你得到了什么。

version: '3'
services:
myapp:
build: .
image: myapp
ports:
- "9001:9001"
volumes:
- ./logs:/home/logs

还值得注意的是,这种方法的持久性是双向的。容器内对文件所做的任何更改都会反射(reflect)回主机。主机的任何更改也会反射(reflect)在容器内部。

关于Docker容器将日志保存在宿主机目录下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54374724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com