首页 > 解决方案 > 在 Docker 中运行时,是否可以将 Thingsboard 配置文件映射到主机文件系统?

问题描述

我在 Ubuntu 的 Docker 中安装了 Thingsboard。compose 文件将 2 个卷映射到主机系统、数据和日志目录,并且工作正常。

我想对 conf 目录做同样的事情,以便能够修改 thingsboard.yml 和 .conf 文件中的一些配置和环境变量值,并且避免每次更改某些内容时都必须重新创建容器。

我尝试过与 docker-compose.yml 中的数据和日志目录相同的方法:

> volumes:
> - /ThingsboardDocker/conf:/usr/share/thingsboard/conf

...但是在创建容器时会引发此错误:

/usr/bin/start-tb.sh: line 25: /usr/share/thingsboard/conf/thingsboard.conf: No such file or directory  mytb_1       | /usr/bin/install-tb.sh: line 45: /usr/share/thingsboard/conf/thingsboard.conf: No such file or directory

对于数据和日志目录工作正常,但我不知道为什么它不适用于配置文件。

可能是什么问题呢?

谢谢!

标签: linuxdockerconfigurationdocker-volumethingsboard

解决方案


您当前使用的项目是bind mount,我建议使用volumes,这可以将容器中的数据弹出到主机上的特殊位置。接下来是一个最小的示例,您可以对其进行自定义以满足您的要求:

20211008/docker-compose.yaml:

version: "3"

services:
  app:
    image: nginx
    ports:
      - 9000:80
    volumes:
      - export_data:/etc/nginx/conf.d

volumes:
  export_data:

容器启动后,例如有名称20211008_app_1,那么我们可以使用 next 来获取路径export_data

shubuntu1@shubuntu1:~/20211008$ docker inspect 20211008_app_1 | grep export_data
                "20211008_export_data:/etc/nginx/conf.d:rw"
                "Name": "20211008_export_data",
                "Source": "/var/lib/docker/volumes/20211008_export_data/_data",

在这里,/var/lib/docker/volumes/20211008_export_data/_data表示您可以/etc/nginx/conf.d在容器中找到内容的主机目录:

在主机上:

root@shubuntu1:/var/lib/docker/volumes/20211008_export_data/_data# ls
default.conf

在容器中:

root@shubuntu1:~# docker exec -it 20211008_app_1 ls /etc/nginx/conf.d
default.conf

推荐阅读