我对Docker来说还比较陌生,目前正在构建一个多容器的dockerized azure Web应用程序(烧瓶中)。但是,我在机密管理方面遇到了一些困难。我已经成功构建了一个通过环境变量存储应用程序机密的版本。但是基于最近的一些阅读,我已经注意到这不是一个好主意。我一直在尝试更新我的应用程序以使用Docker Secrets,但是没有运气。
我已经根据这篇文章成功创建了秘密:
how do you manage secret values with docker-compose v3.1?
我已经部署了堆栈,并验证了/ run / secrets /中两个容器中的机密均可用。但是,当我以天蓝色运行该应用程序时,出现错误。
这是我为蔚蓝启动应用程序所采取的步骤。
docker swarm init --advertise-addr XXXXXX
$ echo "This is an external secret" | docker secret create my_external_secret
docker-compose build
docker push
docker stack deploy -c *path-to*/docker-compose.yml webapp
下一步,我将重新启动azure网络应用以提取最新图像
docker-compose的基本结构如下。
version: '3.1'
services:
webapp:
build: .
secrets:
- my_external_secret
image: some_azure_registry/flask_site:latest
celery:
build: .
command: celery worker -A tasks.celery --loglevel=INFO -P gevent
secrets:
- my_external_secret
image: some_azure_registry.azurecr.io/flask_site_celery:latest
secrets: # top level secrets block
- my_external_secret
external: true
但是,当我以天蓝色运行应用程序时,我得到了:
没有这样的文件或目录:'/ run / secrets / my_external_secret
我可以将外壳连接到容器并成功运行:
python
open('/run/secrets/*my_external_secret*', 'r').read().strip()
但是,当上述行由webapp执行时,它将失败,并出现no file or directory错误。任何帮助将不胜感激。
答案 0 :(得分:0)
不幸的是,Azure Web App for Container不支持docker-compose顶层的秘密。在下面看看:
支持的选项
- 命令
- 入口点
- 环境
- 图片
- 端口
- 重新启动
- 服务
- 音量
不支持的选项
- 构建(不允许)
- depends_on(忽略)
- 网络(忽略)
- 秘密(忽略)
- 80和8080以外的其他端口(忽略)
有关更多详细信息,请参见Docker Compose options。