Skip to main content

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命令执行后删除。