hide_secrets
隐藏明文密码
为了快速部署,系统用到的密码通常以明文方式配置在docker-compose.yml文件中,如clickhouse的密码以及MongoDB的密码等。
为了安全起见,建议在生产环境中使用环境变量来配置这些密码,而不是明文存储在docker-compose.yml文件中
可以采用 .env 文件 + 环境变量 的方式实现。步骤:
1 - 在docker-compose.yml所在目录创建 .env 文件,存储密码(权限设为仅自己可读)
# 创建 .env 文件,存储暴漏出来的密码
echo "MONGO_ROOT_PASSWORD=kl9mN2vX" > .env
echo "CLICKHOUSE_ROOT_PASSWORD=mKWaR4W8" >> .env
# 限制文件权限(仅所有者可读,避免泄露)
chmod 600 .env
2 - 在 docker-compose.yml 中用变量名引用环境变量
version: '3.8'
services:
mongo:
image: mongo:5.0
environment:
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD}
# ... 更多信息
clickhouse:
container_name: yiask_clickhouse
restart: always
image: docker.m.daocloud.io/clickhouse/clickhouse-server:24.12-alpine
volumes:
- /yiask/database/clickhouse:/var/lib/clickhouse
environment:
CLICKHOUSE_USER: root
CLICKHOUSE_PASSWORD: ${CLICKHOUSE_ROOT_PASSWORD}
# ...更多信息
配置完docker-compose.yml,重新拉起容器即可
docker compose up -d
注意:整个项目中可能暴漏密码的地方有2处,一处是docker-compose.yml文件,一处是执行完dump命令后,在项目路径下会取出容器中的settings.js文件。
里面存放了数据库密码等敏感信息,此处仅展示了隐藏docker-compose.yml文件中配置的环境变量.
dump产生的settings.js文件可以在dump命令执行后删除。