【问题标题】:File not found in Docker Container using GitLab-CI使用 GitLab-CI 在 Docker 容器中找不到文件
【发布时间】:2018-01-26 19:49:56
【问题描述】:

使用 GitLab-CI,我试图将秘密变量回显到 Docker 容器内的文件中。该文件存在并且用户有权写入该文件但我收到No such file or directory 错误。

$ /usr/bin/docker exec -t $CI_PROJECT_NAME ls -la /opt/application/conf/kubeadminaccount.yml
    -rw-rw-r-- 1 nodeuser nodeuser 420 Aug 18 07:19 /opt/application/conf/kubeadminaccount.yml

$ /usr/bin/docker exec -t $CI_PROJECT_NAME whoami
    nodeuser

$ /usr/bin/docker exec -t $CI_PROJECT_NAME echo $KUBE_ADMIN_ACCOUNT > /opt/application/conf/kubeadminaccount.yml
    bash: line 69: /opt/application/conf/kubeadminaccount.yml: No such file or directory

【问题讨论】:

  • 你能上传你用来启动容器的dockerfile或yaml文件吗
  • 尝试将完整的 echo 重定向用引号括起来,这样 "echo $KUBE_ADMIN_ACCOUNT > /opt/application/conf/kubeadminaccount.yml"
  • 我会更新你创建容器的方式,而不是在它运行时尝试更新它

标签: bash docker permissions echo gitlab-ci


【解决方案1】:

您的重定向运算符在主机上工作,而不是在您的容器内。下面改一下

$ /usr/bin/docker exec -t $CI_PROJECT_NAME echo $KUBE_ADMIN_ACCOUNT > /opt/application/conf/kubeadminaccount.yml

$ /usr/bin/docker exec -t $CI_PROJECT_NAME bash -c "echo $KUBE_ADMIN_ACCOUNT > /opt/application/conf/kubeadminaccount.yml"

【讨论】:

  • 由于值复杂,必须在变量周围添加\"
  • 是的,如果 value 有新行,则需要这样做。但是现在休息一下,事情对你有用吗?
  • 是的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
  • 2021-02-27
  • 2022-10-12
  • 2017-05-15
  • 1970-01-01
相关资源
最近更新 更多