我在 Windows 10 上运行 docker compose 4.33.1,我注意到在 docker compose 中使用 Secret 时出现了奇怪的行为。如果定义了秘密但其文件丢失,docker 将简单地创建一个与丢失的秘密文件同名的空文件夹,然后继续假装一切正常。好吧,事实并非如此,我该如何阻止这种疯狂呢?
您可以轻松测试:
docker-compose.yml
:version: "3.8"
services:
testy:
image: "node:18"
entrypoint: cat /run/secrets/test_secret
secrets:
- test_secret
secrets:
test_secret:
file: ./secret.txt
docker compose up
secret.txt
testy-1 | cat: /run/secrets/test_secret: Is a directory
只需将其添加到您的 docker-compose.yml
version: "3.8"
services:
testy:
image: "node:18"
entrypoint: /bin/sh -c "if [ -f /run/secrets/test_secret ]; then cat /run/secrets/test_secret; else echo 'Secret file is missing'; exit 1; fi"
secrets:
- test_secret
secrets:
test_secret:
file: ./secret.txt
如果缺少seret文件,这将退出