linux - 在 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
对于数据和日志目录工作正常,但我不知道为什么它不适用于配置文件。
可能是什么问题呢?
谢谢!
解决方案
您当前使用的项目是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
推荐阅读
- javascript - 为什么 localstorage 多切换状态代码在 jsfiddle 中有效,但在我的网页上无效?
- python - FuncAnimation() 在未分配给变量时不起作用
- c++ - 在 C++ Palindrome 作业中使用 getline 忽略空格
- php - 用于获取字符串的 PHP 重定向页面和 Echo 数据
- jax-rs - MessageBodyWriter 的选择
- mongodb - Mongodb多对多获取相关项
- html - 去html模板表
- python - pyenv install 2.7.5 - 构建失败 - 分段错误 - Fedora 29
- promise - 直接执行代码会正确抛出异常,但在函数内不会
- elasticsearch - Elasticsearch:如何删除以前版本创建的不受支持的静态索引设置?