Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用docker设置带有公钥/私钥信息的ftp.ssh目录_Java_Spring_Docker_Kubernetes_Kubernetes Helm - Fatal编程技术网

Java 使用docker设置带有公钥/私钥信息的ftp.ssh目录

Java 使用docker设置带有公钥/私钥信息的ftp.ssh目录,java,spring,docker,kubernetes,kubernetes-helm,Java,Spring,Docker,Kubernetes,Kubernetes Helm,我有一个参考sftp键字符串的舵图: apiVersion: v1 kind: Pod metadata: name: envar-demo labels: purpose: demonstrate-envars spec: containers: - name: envar-demo-container image: gcr.io/google-samples/node-hello:1.0 env: - name: PUBLIC_KEY

我有一个参考sftp键字符串的舵图:

apiVersion: v1
kind: Pod
metadata:
  name: envar-demo
  labels:
    purpose: demonstrate-envars
spec:
  containers:
  - name: envar-demo-container
    image: gcr.io/google-samples/node-hello:1.0
    env:
    - name: PUBLIC_KEY
      value: secretFromVault
    - name: PRIVATE_KEY
      value: secretFromVault
我有一个
DockerFile
,它设置我的用户并创建一个
.ssh
目录

RUN adduser -D -s /bin/bash -h /test_user test_user &&\
mkdir /test_user/.ssh/ &&\
chmod 700 /test_usr/.ssh/ &&
在这个目录中,我想创建
id\u rsa
文件并输入私钥字符串,创建
knownhost
文件并输入公钥的引用,以便建立远程连接目标服务器


如何使用dockerfile完成此操作?还是有更好的方法?我的sftp客户端代码引用了这两个文件。

您可以将
卷/test\u usr/.ssh
添加到Dockerfile,然后将本地目录装载到该卷。在本地目录中,您可以使用
ssh keygen
knownhosts
生成密钥(如果需要)。

您可以将
VOLUME/test\u usr/.ssh
添加到Dockerfile中,然后将本地目录装载到该卷。在本地目录中,您可以使用
ssh-keygen
knownhosts
生成密钥(如果需要)。

您不需要将机密作为环境变量,而需要将它们作为文件装载

apiVersion: v1
kind: Pod
metadata:
  name: envar-demo
  labels:
    purpose: demonstrate-envars
spec:
  containers:
  - name: envar-demo-container
    image: gcr.io/google-samples/node-hello:1.0
    volumeMounts:
    - name: keys
      mountPath: /home/test_user/.ssh
      subPath: id_rsa.pub
    - name: keys
      mountPath: /home/test_user/.ssh
      subPath: id_rsa
  volumes:
  - name: keys
    secret:
      secretName: secretFromVault
      defaultMode: 384

在这种情况下,您需要将机密名称从
PUBLIC\u KEY
PRIVATE\u KEY
更新为
id\u rsa.pub
id\u rsa

您需要将机密作为一个文件装载,而不是作为环境变量

apiVersion: v1
kind: Pod
metadata:
  name: envar-demo
  labels:
    purpose: demonstrate-envars
spec:
  containers:
  - name: envar-demo-container
    image: gcr.io/google-samples/node-hello:1.0
    volumeMounts:
    - name: keys
      mountPath: /home/test_user/.ssh
      subPath: id_rsa.pub
    - name: keys
      mountPath: /home/test_user/.ssh
      subPath: id_rsa
  volumes:
  - name: keys
    secret:
      secretName: secretFromVault
      defaultMode: 384

在这种情况下,您需要将机密名称从
PUBLIC\u-KEY
PRIVATE\u-KEY
更新为
id\u rsa.pub
id\u rsa

您是否介意澄清问题中的关系?您是否正在使用您的
Dockerfile
创建的映像来启动sftp服务器?否,我有一个使用jsch库连接到远程服务器的服务,我想在容器中设置身份验证文件,以供应用程序引用。因此,您的容器将使用这些密钥运行Kubernetes吊舱,对吗?是的。没错,你能澄清一下你问题中的关系吗?您是否正在使用您的
Dockerfile
创建的映像来启动sftp服务器?否,我有一个使用jsch库连接到远程服务器的服务,我想在容器中设置身份验证文件,以供应用程序引用。因此,您的容器将使用这些密钥运行Kubernetes吊舱,对吗?是的。这是正确的,Dockerfile中的
VOLUME
大多只具有令人困惑的副作用;将文件装载到容器中不需要它(例如,@RyanSiu的答案可以在未修改的图像上使用)。
VOLUME
在Dockerfile中通常只会产生令人困惑的副作用;将文件装载到容器中不需要它(例如,@RyanSiu的答案可以用于未修改的图像)。