Dockerfile:无法复制文件
Dockerfile: unable to copy file
当我的 Docker 容器启动时,我需要 运行 这一行:
cp /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2
这两个文件仅在安装了一些软件包后才存在于 Docker 容器中。
在Docker文件中,我试过:
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 命令没有复制这个文件?
编辑:我的完整 Docker文件
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
当我的 Docker 容器启动时,我需要 运行 这一行:
cp /lib/libc.musl-x86_64.so.1 /lib/ld-linux-x86-64.so.2
这两个文件仅在安装了一些软件包后才存在于 Docker 容器中。
在Docker文件中,我试过:
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 命令没有复制这个文件?
编辑:我的完整 Docker文件
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