在docker文件中存储密码的推荐做法是什么?
在使用docker之前,我曾经在config.json文件中拥有密码,然后在我的代码中解密(在此示例中为nodejs)
{
"database": {
"host":"localhost",
"user":"root",
"password":"0234c7912c78797d39",
"database":"mydatabase"
}
}
然后在nodejs中解密。
config.database.password = crypto.decrypt(config.database.password);
我不确定这是否是一种好方法,但绝对希望看到将密码存储在将要部署的纯文本文件中的最佳方法。
现在我有了这个docker文件,我应该如何获取开发/生产的密码?
version: '3'
services:
mysql:
image: "mysql:5.7"
container_name: "mysql"
ports:
- "6603:3306"
environment:
DATABASE_HOST: mysql
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: mydatabase
MYSQL_USER: mysql
MYSQL_PASSWORD: password
答案 0 :(得分:-1)
我们使用了Kubernetes,在link之后进行了很好的检查,首先您应该创建一个称为secret的东西并将其应用private Date currentDate() {
final Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 0);
return cal.getTime();
}
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
String posted = dateFormat.format(currentDate());
。
kubectl apply -f <secret-file>
然后您应该创建一个可以访问机密的pod
apiVersion: v1
kind: Secret
metadata:
name: test-secret
data:
username: bXktYXBw
password: Mzk1MjgkdmRnN0pi
秘密文件中的用户名和密码均为base64,并且通过安装在apiVersion: v1
kind: Pod
metadata:
name: secret-test-pod
spec:
containers:
- name: test-container
image: nginx
volumeMounts:
# name must match the volume name below
- name: secret-volume
mountPath: /etc/secret-volume
# The secret data is exposed to Containers in the Pod through a Volume.
volumes:
- name: secret-volume
secret:
secretName: test-secret
下的卷向容器公开。如果您连接到Docker容器,则将cd插入/etc/secret-volume
并在下面运行:
/etc/secret-volume
您应该获得如下输出:
cat username; echo; cat password; echo