我试图托管一个带有MySQL后端的CalDAV服务器(Baikal)-但问题与这些图像无关。我的docker-compose.yml
如下所示
version: "3.4"
services:
mysqldb:
image: mysql:5.7
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: kU47k9PpjU5A
MYSQL_DATABASE: baikal
MYSQL_USER: baikal
MYSQL_PASSWORD: PY74bSs72fkT
volumes:
- db_data:/var/lib/mysql
baikal:
image: ckulka/baikal:nginx
container_name: baikal
restart: always
ports:
# These ports are in format <host-port>:<container-port>
- 80:80
volumes:
- baikal_specific:/var/www/baikal/Specific
- baikal_config:/var/www/baikal/config
volumes:
db_data:
baikal_specific:
baikal_config:
字符串
我已经使用了命名卷,并将WEBSITES_ENABLE_APP_SERVICE_STORAGE
设置为true
。这可以轻松地工作,我能够在应用程序重新启动之间存储和持久化数据。
但是我无法找到文件系统中存储的卷的确切位置(我在Kudu中通过bash shell搜索)。我四处寻找(甚至在/home目录之外),但找不到它们。我无法运行docker volume ls
,因为Docker客户端在Kudu中不可用。
在azure应用服务上运行容器,我不知道数据实际存储在哪里,因为如果我决定在其他地方托管容器,我可能需要备份文件。
我正在使用一个免费的应用程序服务计划,该计划附带1GB的存储空间,因此希望利用这个而不是安装Azure文件共享。此外,我知道WEBAPP_STORAGE_HOME
,但不想使用本地路径,因为我在这里询问了其他问题-StackOverflow - Azure App Service multi containers volume not working。
1条答案
按热度按时间b5buobof1#
使用Docker容器时,卷的存储由Azure Storage管理。数据不会直接存储在底层虚拟机的文件系统上,并且您无法直接从Kudu或App Service环境中的Docker命令行访问它。
可能的解决方案:
${WEBAPP_STORAGE_HOME}
,考虑使用Docker卷。它们更灵活,可以在容器重启时处理存储。字符串
考虑在Baikal容器的启动脚本中使用
wait-for-it
或dockerize
等工具,以等待MySQL服务器准备好接受连接。wait-for-it.sh:
型