当我的 Docker 容器启动时,我需要运行此行:
cp /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2
这两个文件仅在安装了某些软件包后才存在于 Docker 容器中。
在Dockerfile中,我尝试过:
RUN cp /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2
COPY /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2
ENTRYPOINT ["cp","/lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2"]
还创建了一个 bash 脚本,其中包含(除其他外)这一行。我知道脚本已运行,因为它所做的其他更改都存在,但文件未复制。
#!/bin/sh
apk add build-base
apk add libc6-compat
cp /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2
然后运行
RUN ./my_bash_script.sh
但是,当我在 Docker 容器中使用命令行并手动运行该行时,它可以工作。
为什么 Dockerfile 命令不复制此文件?
编辑:我完整的 Dockerfile
FROM golang:alpine
ENV APP_NAME hello-world
ADD env_setup.sh .
RUN chmod +x env_setup.sh
RUN ./env_setup.sh
WORKDIR /home/helloworld
ADD vendor/ ./vendor/
COPY main.go .
COPY go.mod .
最佳答案
可以指定多个资源,但文件和目录的路径将被解释为相对于构建上下文的源
尝试先将文件复制到Dockerfile所在的本地目录
然后
COPY libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2
关于linux - Dockerfile:无法复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71648115/