将 docker 机密传递给 Azure Web 应用时出错 'No such file or directory: '/run/secrets/'
Error passing docker secrets to azure web app 'No such file or directory: '/run/secrets/'
我对 Docker 比较陌生,目前正在构建一个多容器 dockerized azure web 应用程序(在烧瓶中)。但是,我在秘密管理方面遇到了一些困难。我已经成功构建了一个通过环境变量存储应用程序机密的版本。但根据最近的一些阅读,我注意到这不是一个好主意。我一直在尝试更新我的应用程序以使用 Docker Secrets 但没有成功。
我已经成功创建了基于此的秘密 post:
我已经部署了堆栈并验证了秘密在 /run/secrets/ 中的两个容器中都可用。但是,当我 运行 天蓝色的应用程序时,出现错误。
以下是我在 azure 中启动应用程序所采取的步骤。
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 web 应用程序以提取最新图像
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
我可以将 shell 附加到容器并成功 运行:
python
open('/run/secrets/*my_external_secret*', 'r').read().strip()
但是当上面的行被 webapp 执行时,它失败了,没有文件或目录错误。任何帮助将不胜感激。
不幸的是,docker-compose 顶层的秘密在 Azure Web App for Container 中不受支持。往下看:
Supported options
- command
- entrypoint
- environment
- image
- ports
- restart
- services
- volumes
Unsupported options
- build (not allowed)
- depends_on (ignored)
- networks (ignored)
- secrets (ignored)
- ports other than 80 and 8080 (ignored)
有关详细信息,请参阅 Docker Compose options。
我对 Docker 比较陌生,目前正在构建一个多容器 dockerized azure web 应用程序(在烧瓶中)。但是,我在秘密管理方面遇到了一些困难。我已经成功构建了一个通过环境变量存储应用程序机密的版本。但根据最近的一些阅读,我注意到这不是一个好主意。我一直在尝试更新我的应用程序以使用 Docker Secrets 但没有成功。
我已经成功创建了基于此的秘密 post:
我已经部署了堆栈并验证了秘密在 /run/secrets/ 中的两个容器中都可用。但是,当我 运行 天蓝色的应用程序时,出现错误。
以下是我在 azure 中启动应用程序所采取的步骤。
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 web 应用程序以提取最新图像
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
我可以将 shell 附加到容器并成功 运行:
python
open('/run/secrets/*my_external_secret*', 'r').read().strip()
但是当上面的行被 webapp 执行时,它失败了,没有文件或目录错误。任何帮助将不胜感激。
不幸的是,docker-compose 顶层的秘密在 Azure Web App for Container 中不受支持。往下看:
Supported options
- command
- entrypoint
- environment
- image
- ports
- restart
- services
- volumes
Unsupported options
- build (not allowed)
- depends_on (ignored)
- networks (ignored)
- secrets (ignored)
- ports other than 80 and 8080 (ignored)
有关详细信息,请参阅 Docker Compose options。