【发布时间】:2023-01-30 20:30:12
【问题描述】:
我尝试在 docker-compose 中使用秘密(来自文件 - db_password.txt - 内容:root)。
->docker-compose -f compose-prod-replicaset.yml up --build --force-recreate
秘密通常安装在“run/secrets/db_password”文件夹中;看到那个:
[0m total 8
[0m drwxr-xr-x 2 root root 4096 Apr 22 19:34 .
[0m drwxr-xr-x 1 root root 4096 Apr 22 19:34 ..
[0m -rwxrwxrwx 1 root root 4 Apr 22 17:24 db_password
然而,当我试图将这个秘密用作环境变量(db_password)时,秘密是作为它的秘密路径,在“纯文本”(运行/秘密/db_password);
我的版本是:
- Docker 版本 20.10.13,构建 a224086
- docker-compose 版本 1.29.2,build 5becea4c
我已经使用 docker-compose 创建了一个 mongodb uri,如你所见用户名是“根”,但是密码被绑定为“运行/秘密/db_password”.例如:
- mongodb://root:运行/秘密/db_password@mongo1:27017/devtestdb?authSource=admin
version: "3.9"
networks:
api-net:
services:
mongo1:
container_name: mongo1
image: mongo:4.4.4
restart: always
ports:
- "27017:27017"
networks:
- api-net
volumes:
- ./db-test:/data/db
api:
container_name: api
image: pauloportfolio/api
build:
context: ../
dockerfile: ./docker/Dockerfile
args:
JAR_FILE: target/*.jar
ports:
- "8080:8080"
volumes:
- ./db-test:/data/db
depends_on:
- mongo1
networks:
- api-net
secrets:
- db_password
environment:
HOST_DB: mongo1
PORT_DB: 27017
AUTH_DB: admin
STD_DB: devtestdb
STD_USER: root
PASS_FILE: run/secrets/db_password
PORT_API: 8080
DEBUG_OPTIONS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -Xmx1G -Xms128m -XX:MaxMetaspaceSize=128m
secrets:
db_password:
file: ./db_password.txt
请,任何帮助都是有用的。
非常感谢
【问题讨论】:
-
这一切都符合预期。您需要从指定文件中读取秘密值。
-
@larsks 谢谢,快速回答。但是,它并没有获得“文件的上下文”(root),而是使用“秘密路径”作为纯文本。你有什么建议来解决这个问题吗?
-
@GtdDev 你最终解决了吗?
-
是的..你可以在这里找到我的解决方案:github.com/codegtd/spring-webflux-replicaset
标签: docker docker-compose environment-variables docker-secrets