访问docker容器外部的日志

2024-03-29 11:50:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我在云服务器上使用命令“docker compose up”运行一个算法。其中一个服务(productionbackend)在其容器(./logs/Log\<;UTCTIMENOW>;.txt)内的某个位置写入日志作为其执行的一部分。在

我知道我可以在服务运行时使用'docker logs'命令来检查日志,但是一旦停止使用'docker compose down',日志就会永远丢失(因为容器被破坏)。在

所以我想我想把一个卷“挂载”到我的docker-compose文件中,然后重定向它的输出日志.txt文件放到容器外部的~目录中。我的目录树如下所示:

我在docker-compose文件中尝试了各种组合,但没有成功。在

例如,添加以下内容失败。在

volumes:
- type: volume  # Also tried `bind` type and other syntaxes
- ./logs:/productionbackend/logs


.
├── docker-compose.yaml #THIS IS THE DOCKER-COMPOSE FILE STARTING MY SERVICES
├── productionfrontend
│   ├── Dockerfile
│   ├── app
│   │   ├── database.py
│   │   ├── main.py
│   │   └── requirements.txt
│   └── docker-compose.yaml
└── productionbackend
    ├── Dockerfile
    ├── backend.py
    ├── logs
    │   ├── Log_03_Jun_14.18.19_GMT.txt
    ├── requirements.txt
    ├── settings
    │   └── somefile.py
     ........

谢谢。在


Tags: 文件composedockerpy命令dockerfile目录txt
1条回答
网友
1楼 · 发布于 2024-03-29 11:50:07

下一步:

volumes:
- type: volume  # Also tried `bind` type and other syntaxes
- ./logs:/productionbackend/logs

我不知道是你的错别字还是别人的错别字,但这个语法似乎很奇怪,看official grammar

下面我举一个最简单的例子,供大家参考:

码头工人-合成.yaml:

^{pr2}$

接下来是执行历史:

shubuntu1@shubuntu1:~/abc$ ls
docker-compose.yaml
shubuntu1@shubuntu1:~/abc$ docker-compose up -d
Creating network "abc_default" with the default driver
Creating my_try ... done
shubuntu1@shubuntu1:~/abc$ docker-compose down
Removing my_try ... done
Removing network abc_default
shubuntu1@shubuntu1:~/abc$ ls
docker-compose.yaml  log_on_host
shubuntu1@shubuntu1:~/abc$ cat log_on_host/my_log.txt
hi

从上面可以看到,虽然容器mytry已经被破坏,但是我们仍然可以看到日志my_log.txt,它在主机上有内容hi。你需要修改你的类似上面最小的例子,仅供参考。在

相关问题 更多 >