linux - Dockerfile:无法复制文件

标签 linux docker dockerfile

当我的 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/

相关文章:

apache-spark - 是否有适合多节点集群部署的 Apache Spark 2.0.0 公共(public) Docker 镜像?

docker - Docker未导出环境变量

image - 使用docker build输出信息

javascript - 在docker中运行nodejs应用程序并将标准输出重定向到文件

在 fuzzyflakes 屏幕保护程序中更改实际的薄片颜色

linux - Docker托管环境的ContentRootPath

C fork(), wait4() 问题

linux - 在 linux (debian) 中运行 docker 和 nodemcu-build 时出错

php - 如何在没有密码的情况下从 php 脚本运行 sudo su?

linux - 在终端中运行文本文件