Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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
Bash `docker build`结果->&引用;无法读取CA证书:权限被拒绝";通过shell脚本,但可以在终端中_Bash_Docker_Sbt_Minikube - Fatal编程技术网

Bash `docker build`结果->&引用;无法读取CA证书:权限被拒绝";通过shell脚本,但可以在终端中

Bash `docker build`结果->&引用;无法读取CA证书:权限被拒绝";通过shell脚本,但可以在终端中,bash,docker,sbt,minikube,Bash,Docker,Sbt,Minikube,我有在minikube中构建docker图像的脚本 #set -x ASSEMBLY_NAME=$(basename ${1}) eval $(minikube docker-env) echo "Current user is "$USER echo "Current user groups "$(id -Gn) ls -la /home/user1/.minikube/certs/ca.pem cp ${1} jdbc-puller/build/ docker build --bui

我有在minikube中构建docker图像的脚本

#set -x
ASSEMBLY_NAME=$(basename ${1})
eval $(minikube docker-env)

echo "Current user is "$USER
echo "Current user groups  "$(id -Gn)
ls -la /home/user1/.minikube/certs/ca.pem

cp ${1} jdbc-puller/build/

docker build --build-arg ASSEMBLY_PATH=${ASSEMBLY_NAME} -t ${2} jdbc-puller/build
此脚本从sbt
sbt dockerBuild
执行。 这是自定义命令:

  dockerBuild := {
      s"""./jdbc-puller/build/linux_build.sh ${assembly.value.getAbsolutePath}
       |organisation1/jdbc-puller:${gitCurrentBranch.value}_sha${gitHeadCommit.value
        .getOrElse("No_Head_Commit")}""".stripLineEnd.stripMargin !
    },
但我不认为这是sbt的问题。 因为脚本输出显示正确的用户和组:

Current user is user1
Current user groups  user1 adm cdrom sudo dip plugdev lpadmin sambashare docker
-rw-r--r-- 1 user1 user1 1025 мар 23 18:35 /home/user1/.minikube/certs/ca.pem
could not read CA certificate "/home/user1/.minikube/certs/ca.pem": open /home/user1/.minikube/certs/ca.pem: permission denied
但如果我直接在shell中运行相同的命令:

 docker build --build-arg ASSEMBLY_PATH=navision-jdbc-puller-0.1.user1.prepare-to-development-028aaddff43890720432a2f27ad193a266ecf0ad.jar -t navision/jdbc-puller:prepare-to-development_sha028aaddff43890720432a2f27ad193a266ecf0ad navision-jdbc-puller/build
结果是:

Sending build context to Docker daemon  75.71MB
Step 1/7 : FROM azul/zulu-openjdk-alpine:11.0.2
 ---> e711110a0ad5
Step 2/7 : ARG ASSEMBLY_PATH=target/scala-2.11/sbt-1.0/assembly.jar
 ---> Using cache
 ---> 831efe890156
Step 3/7 : WORKDIR /opt/jdbc-puller
 ---> Using cache
 ---> cf252dc46acd
Step 4/7 : RUN ["chown", "-R", "daemon:daemon", "."]
 ---> Using cache
 ---> 843a834736ca
Step 5/7 : USER daemon
 ---> Using cache
 ---> ea3b9894ceb5
Step 6/7 : COPY $ASSEMBLY_PATH /opt/jdbc-puller/assmebly.jar
 ---> Using cache
 ---> 413ba469b2ef
Step 7/7 : ENTRYPOINT ["java -jar /opt/jdbc-puller/assmebly.jar"]
 ---> Using cache
 ---> 41c384cbcef6
Successfully built 41c384cbcef6
Successfully tagged navision/jdbc-puller:prepare-to-development_sha028aaddff43890720432a2f27ad193a266ecf0ad
每项工作。 附加信息

getfacl: Removing leading '/' from absolute path names
# file: home/user1/.minikube/certs/ca.pem
# owner: user1
# group: user1
user::rw-
group::r--
other::r--

请解释我错在哪里,或者至少我可以检查下一步的内容。

好的,我发现了一个问题。 有两个错误

一个是我的, 我不在终端
eval$(minikube docker env)
中运行

如果minikube或dcoker是从snap安装的,则在ubuntu的minikube中安装第二个。
这里是问题的答案。

``getfacl:从绝对路径名中删除前导“/”,file:home/user1/.minikube/certs/ca.pem,owner:user1,group:user1 user::rw-group::r--other::r--``我可以确认直接从终端运行的脚本与从sbt运行的脚本具有相同的行为。